diff -ru org.openbravo.financial.paymentreport/src/org/openbravo/financial/paymentreport/erpCommon/ad_reports/PaymentReportDao.java /home/jnavarro/workspace/platino-prod/openbravo/modules/org.openbravo.financial.paymentreport/src/org/openbravo/financial/paymentreport/erpCommon/ad_reports/PaymentReportDao.java
--- org.openbravo.financial.paymentreport/src/org/openbravo/financial/paymentreport/erpCommon/ad_reports/PaymentReportDao.java	2016-02-29 04:45:56.000000000 +0100
+++ org.openbravo.financial.paymentreport/src/org/openbravo/financial/paymentreport/erpCommon/ad_reports/PaymentReportDao.java	2016-03-02 17:10:07.179215137 +0100
@@ -190,14 +190,14 @@
       String strFinancialAccountId, String strcCurrency, String strConvertCurrency,
       String strConversionDate, String strPaymType, String strOverdue, String strGroupCrit,
       String strOrdCrit, String strInclPaymentUsingCredit, String strPaymentDateFrom,
-      String strPaymentDateTo, String strExpectedDateFrom, String strExpectedDateTo)
-      throws OBException {
+      String strPaymentDateTo, String strExpectedDateFrom, String strExpectedDateTo,
+      String strsalesrepId) throws OBException {
     return getPaymentReport(vars, strOrg, strInclSubOrg, strDueDateFrom, strDueDateTo,
         strAmountFrom, strAmountTo, strDocumentDateFrom, strDocumentDateTo, strcBPartnerIdIN,
         strcBPGroupIdIN, strcNoBusinessPartner, strcProjectIdIN, strfinPaymSt, strPaymentMethodId,
         strFinancialAccountId, strcCurrency, strConvertCurrency, strConversionDate, strPaymType,
         strOverdue, strGroupCrit, strOrdCrit, strInclPaymentUsingCredit, strPaymentDateFrom,
-        strPaymentDateTo, strExpectedDateFrom, strExpectedDateTo, "dummy");
+        strPaymentDateTo, strExpectedDateFrom, strExpectedDateTo, strsalesrepId, "dummy");
   }
 
   FieldProvider[] getPaymentReport(VariablesSecureApp vars, String strOrg, String strInclSubOrg,
@@ -208,7 +208,7 @@
       String strcCurrency, String strConvertCurrency, String strConversionDate, String strPaymType,
       String strOverdue, String strGroupCrit, String strOrdCrit, String strInclPaymentUsingCredit,
       String strPaymentDateFrom, String strPaymentDateTo, String strExpectedDateFrom,
-      String strExpectedDateTo, String strOutput) throws OBException {
+      String strExpectedDateTo, String strsalesrepId, String strOutput) throws OBException {
 
     StringBuilder hsqlScript = new StringBuilder();
     final java.util.List<Object> parameters = new ArrayList<Object>();
@@ -453,8 +453,8 @@
       // financial account
       if (!strFinancialAccountId.isEmpty()) {
         hsqlScript.append(" and  (pay is not null and ");
-        hsqlScript
-            .append("(select case when trans is not null then trans.account.id else payment.account.id end from FIN_Finacc_Transaction trans right outer join trans.finPayment payment where payment=pay)");
+        hsqlScript.append(
+            "(select case when trans is not null then trans.account.id else payment.account.id end from FIN_Finacc_Transaction trans right outer join trans.finPayment payment where payment=pay)");
 
         hsqlScript.append(" = '");
         hsqlScript.append(strFinancialAccountId);
@@ -487,6 +487,15 @@
         hsqlScript.append("'");
       }
 
+      // strsalesrepId
+      if (!strsalesrepId.isEmpty()) {
+        hsqlScript.append(" and inv.");
+        hsqlScript.append(Invoice.PROPERTY_SALESREPRESENTATIVE);
+        hsqlScript.append(" = '");
+        hsqlScript.append(strsalesrepId);
+        hsqlScript.append("'");
+      }
+
       // payment type
       if (strPaymType.equalsIgnoreCase("FINPR_Receivables")) {
         hsqlScript.append(" and (pay.");
@@ -536,8 +545,8 @@
       }
 
       final StringBuilder firstLineQuery = new StringBuilder();
-      firstLineQuery
-          .append("select fpsd, (select a.sequenceNumber from ADList a where a.reference.id = '575BCB88A4694C27BC013DE9C73E6FE7' and a.searchKey = coalesce(pay.status, 'RPAP')) as a");
+      firstLineQuery.append(
+          "select fpsd, (select a.sequenceNumber from ADList a where a.reference.id = '575BCB88A4694C27BC013DE9C73E6FE7' and a.searchKey = coalesce(pay.status, 'RPAP')) as a");
       hsqlScript = firstLineQuery.append(hsqlScript);
 
       hsqlScript.append(" order by ");
@@ -568,8 +577,8 @@
         hsqlScript.append("), ");
       } else if (strGroupCrit.equalsIgnoreCase("ACCS_ACCOUNT_ID_D")) {
         hsqlScript.append(" coalesce(");
-        hsqlScript
-            .append(" (select trans.account.name from FIN_Finacc_Transaction trans left outer join trans.finPayment payment where payment.id=pay.id),");
+        hsqlScript.append(
+            " (select trans.account.name from FIN_Finacc_Transaction trans left outer join trans.finPayment payment where payment.id=pay.id),");
         hsqlScript.append(" pay.");
         hsqlScript.append(FIN_Payment.PROPERTY_ACCOUNT);
         hsqlScript.append(".name, 'Awaiting Payment'");
@@ -618,8 +627,8 @@
           }
           if (strOrdCritList[i].equalsIgnoreCase("ACCS_ACCOUNT_ID_D")) {
             hsqlScript.append(", coalesce(");
-            hsqlScript
-                .append(" (select trans.account.name from FIN_Finacc_Transaction trans left outer join trans.finPayment payment where payment.id=pay.id),");
+            hsqlScript.append(
+                " (select trans.account.name from FIN_Finacc_Transaction trans left outer join trans.finPayment payment where payment.id=pay.id),");
             hsqlScript.append(" pay.");
             hsqlScript.append(FIN_Payment.PROPERTY_ACCOUNT);
             hsqlScript.append(".name)");
@@ -694,10 +703,10 @@
         FIN_FinaccTransaction trx = null;
         FIN_PaymentDetail detail = FIN_PaymentScheduleDetail.getPaymentDetails();
         if (detail != null) {
-          OBCriteria<FIN_FinaccTransaction> trxQuery = OBDal.getInstance().createCriteria(
-              FIN_FinaccTransaction.class);
-          trxQuery.add(Restrictions.eq(FIN_FinaccTransaction.PROPERTY_FINPAYMENT,
-              detail.getFinPayment()));
+          OBCriteria<FIN_FinaccTransaction> trxQuery = OBDal.getInstance()
+              .createCriteria(FIN_FinaccTransaction.class);
+          trxQuery.add(
+              Restrictions.eq(FIN_FinaccTransaction.PROPERTY_FINPAYMENT, detail.getFinPayment()));
           // uniqueness guaranteed via unique constraint in db
           trx = (FIN_FinaccTransaction) trxQuery.uniqueResult();
         }
@@ -710,8 +719,8 @@
             FieldProviderFactory.setField(data, "BPARTNER", "");
           } else {
             // bp_group -- bp_category
-            FieldProviderFactory.setField(data, "BP_GROUP", bp.getBusinessPartnerCategory()
-                .getName());
+            FieldProviderFactory.setField(data, "BP_GROUP",
+                bp.getBusinessPartnerCategory().getName());
             // bpartner
             FieldProviderFactory.setField(data, "BPARTNER", bp.getName());
           }
@@ -725,47 +734,45 @@
               .getPaymentDetails().getFinPayment().getPaymentMethod().getIdentifier());
 
           // payment
-          FieldProviderFactory
-              .setField(
-                  data,
-                  "PAYMENT",
-                  ((FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment().getPaymentDate() != null) ? dateFormat
-                      .format(FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment()
-                          .getPaymentDate()) : "Null")
-                      + " - "
-                      + FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment()
-                          .getDocumentNo());
+          FieldProviderFactory.setField(data, "PAYMENT",
+              ((FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment()
+                  .getPaymentDate() != null)
+                      ? dateFormat.format(FIN_PaymentScheduleDetail.getPaymentDetails()
+                          .getFinPayment().getPaymentDate())
+                      : "Null")
+                  + " - "
+                  + FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment().getDocumentNo());
           // payment description
-          FieldProviderFactory.setField(data, "PAYMENT_DESC", FIN_PaymentScheduleDetail
-              .getPaymentDetails().getFinPayment().getDescription());
+          FieldProviderFactory.setField(data, "PAYMENT_DESC",
+              FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment().getDescription());
           // payment_id
-          FieldProviderFactory.setField(data, "PAYMENT_ID", FIN_PaymentScheduleDetail
-              .getPaymentDetails().getFinPayment().getId().toString());
+          FieldProviderFactory.setField(data, "PAYMENT_ID",
+              FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment().getId().toString());
           // payment_date
-          FieldProviderFactory
-              .setField(
-                  data,
-                  "PAYMENT_DATE",
-                  (FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment().getPaymentDate() != null) ? dateFormat
-                      .format(FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment()
-                          .getPaymentDate()) : "Null");
+          FieldProviderFactory.setField(data, "PAYMENT_DATE",
+              (FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment()
+                  .getPaymentDate() != null)
+                      ? dateFormat.format(FIN_PaymentScheduleDetail.getPaymentDetails()
+                          .getFinPayment().getPaymentDate())
+                      : "Null");
           // payment_docNo
-          FieldProviderFactory.setField(data, "PAYMENT_DOCNO", FIN_PaymentScheduleDetail
-              .getPaymentDetails().getFinPayment().getDocumentNo());
+          FieldProviderFactory.setField(data, "PAYMENT_DOCNO",
+              FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment().getDocumentNo());
           // payment yes / no
           FieldProviderFactory.setField(data, "PAYMENT_Y_N", "");
           // financialAccount
           FieldProviderFactory.setField(data, "FINANCIAL_ACCOUNT",
               FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment()
-                  .getFINFinaccTransactionList().size() != 0 ? FIN_PaymentScheduleDetail
-                  .getPaymentDetails().getFinPayment().getFINFinaccTransactionList().get(0)
-                  .getAccount().getName() : FIN_PaymentScheduleDetail.getPaymentDetails()
-                  .getFinPayment().getAccount().getName());
+                  .getFINFinaccTransactionList().size() != 0
+                      ? FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment()
+                          .getFINFinaccTransactionList().get(0).getAccount().getName()
+                      : FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment().getAccount()
+                          .getName());
           // status
-          FieldProviderFactory.setField(data, "STATUS", translateRefList(FIN_PaymentScheduleDetail
-              .getPaymentDetails().getFinPayment().getStatus()));
-          FieldProviderFactory.setField(data, "STATUS_CODE", FIN_PaymentScheduleDetail
-              .getPaymentDetails().getFinPayment().getStatus());
+          FieldProviderFactory.setField(data, "STATUS", translateRefList(
+              FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment().getStatus()));
+          FieldProviderFactory.setField(data, "STATUS_CODE",
+              FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment().getStatus());
           // is receipt
           if (FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment().isReceipt()) {
             FieldProviderFactory.setField(data, "ISRECEIPT", "Y");
@@ -784,9 +791,9 @@
         } else {
 
           // bp_group -- bp_category
-          FieldProviderFactory.setField(data, "BP_GROUP", FIN_PaymentScheduleDetail
-              .getInvoicePaymentSchedule().getInvoice().getBusinessPartner()
-              .getBusinessPartnerCategory().getName());
+          FieldProviderFactory.setField(data, "BP_GROUP",
+              FIN_PaymentScheduleDetail.getInvoicePaymentSchedule().getInvoice()
+                  .getBusinessPartner().getBusinessPartnerCategory().getName());
           // bpartner
           FieldProviderFactory.setField(data, "BPARTNER", FIN_PaymentScheduleDetail
               .getInvoicePaymentSchedule().getInvoice().getBusinessPartner().getName());
@@ -839,11 +846,11 @@
           fillLine(dateFormat, data, FIN_PaymentScheduleDetail,
               FIN_PaymentScheduleDetail.getInvoicePaymentSchedule(), false);
         } else if (FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment() != null) {
-          java.util.List<Invoice> invoices = getInvoicesUsingCredit(FIN_PaymentScheduleDetail
-              .getPaymentDetails().getFinPayment());
+          java.util.List<Invoice> invoices = getInvoicesUsingCredit(
+              FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment());
           if (invoices.size() == 1) {
-            java.util.List<FIN_PaymentSchedule> ps = getInvoicePaymentSchedules(FIN_PaymentScheduleDetail
-                .getPaymentDetails().getFinPayment());
+            java.util.List<FIN_PaymentSchedule> ps = getInvoicePaymentSchedules(
+                FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment());
             fillLine(dateFormat, data, FIN_PaymentScheduleDetail, ps.get(0), true);
           } else {
             // project
@@ -851,16 +858,16 @@
             // salesPerson
             FieldProviderFactory.setField(data, "SALES_PERSON", "");
             // invoiceNumber.
-            FieldProviderFactory.setField(data, "INVOICE_NUMBER", invoices.size() > 1 ? "**"
-                + getInvoicesDocNos(invoices) : "");
+            FieldProviderFactory.setField(data, "INVOICE_NUMBER",
+                invoices.size() > 1 ? "**" + getInvoicesDocNos(invoices) : "");
             // payment plan id
             FieldProviderFactory.setField(data, "PAYMENT_PLAN_ID", "");
             // payment plan yes / no
             FieldProviderFactory.setField(data, "PAYMENT_PLAN_Y_N",
                 invoices.size() != 1 ? "Display:none" : "");
             // payment plan yes / no
-            FieldProviderFactory.setField(data, "NOT_PAYMENT_PLAN_Y_N", invoices.size() > 1 ? ""
-                : "Display:none");
+            FieldProviderFactory.setField(data, "NOT_PAYMENT_PLAN_Y_N",
+                invoices.size() > 1 ? "" : "Display:none");
             // invoiceDate
             FieldProviderFactory.setField(data, "INVOICE_DATE", "");
             // dueDate.
@@ -907,8 +914,8 @@
 
         Currency baseCurrency = OBDal.getInstance().get(Currency.class, strConvertCurrency);
 
-        boolean sameCurrency = baseCurrency.getISOCode().equalsIgnoreCase(
-            transCurrency.getISOCode());
+        boolean sameCurrency = baseCurrency.getISOCode()
+            .equalsIgnoreCase(transCurrency.getISOCode());
 
         if (!sameCurrency) {
           convRate = this.getConversionRate(transCurrency, baseCurrency, strConversionDate);
@@ -917,16 +924,12 @@
             final int stdPrecission = convRate.getToCurrency().getStandardPrecision().intValue();
             if (isReceipt) {
               FieldProviderFactory.setField(data, "TRANS_AMOUNT", transAmount.toString());
-              FieldProviderFactory.setField(
-                  data,
-                  "BASE_AMOUNT",
+              FieldProviderFactory.setField(data, "BASE_AMOUNT",
                   transAmount.multiply(convRate.getMultipleRateBy())
                       .setScale(stdPrecission, BigDecimal.ROUND_HALF_UP).toString());
             } else {
               FieldProviderFactory.setField(data, "TRANS_AMOUNT", transAmount.negate().toString());
-              FieldProviderFactory.setField(
-                  data,
-                  "BASE_AMOUNT",
+              FieldProviderFactory.setField(data, "BASE_AMOUNT",
                   transAmount.multiply(convRate.getMultipleRateBy())
                       .setScale(stdPrecission, BigDecimal.ROUND_HALF_UP).negate().toString());
             }
@@ -957,16 +960,14 @@
           status = FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment().getStatus();
         } catch (NullPointerException e) {
         }
-        final boolean isCreditPayment = FIN_PaymentScheduleDetail.getInvoicePaymentSchedule() == null
+        final boolean isCreditPayment = FIN_PaymentScheduleDetail
+            .getInvoicePaymentSchedule() == null
             && FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment() != null;
 
         BigDecimal balance = BigDecimal.ZERO;
         if (isCreditPayment && status != null && "PWNC RPR RPPC PPM RDNC".indexOf(status) >= 0) {
-          balance = FIN_PaymentScheduleDetail
-              .getPaymentDetails()
-              .getFinPayment()
-              .getGeneratedCredit()
-              .subtract(
+          balance = FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment()
+              .getGeneratedCredit().subtract(
                   FIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment().getUsedCredit());
           if (isReceipt) {
             balance = balance.negate();
@@ -985,7 +986,8 @@
         finPaymDetail = FIN_PaymentScheduleDetail.getPaymentDetails();
 
         // Payment Schedule Detail grouping criteria
-        if (finPaymDetail != null && FIN_PaymentScheduleDetail.getInvoicePaymentSchedule() != null) {
+        if (finPaymDetail != null
+            && FIN_PaymentScheduleDetail.getInvoicePaymentSchedule() != null) {
           mustGroup = finPaymDetail.getFinPayment().getId().equalsIgnoreCase(previousPaymentId)
               && FIN_PaymentScheduleDetail.getInvoicePaymentSchedule().getId()
                   .equalsIgnoreCase(previousFPSDInvoiceId);
@@ -999,9 +1001,8 @@
           previousFPSDInvoiceId = null;
         } else if (finPaymDetail == null
             && FIN_PaymentScheduleDetail.getInvoicePaymentSchedule() != null) {
-          mustGroup = previousPaymentId == null
-              && FIN_PaymentScheduleDetail.getInvoicePaymentSchedule().getId()
-                  .equalsIgnoreCase(previousFPSDInvoiceId);
+          mustGroup = previousPaymentId == null && FIN_PaymentScheduleDetail
+              .getInvoicePaymentSchedule().getId().equalsIgnoreCase(previousFPSDInvoiceId);
           previousPaymentId = null;
           previousFPSDInvoiceId = FIN_PaymentScheduleDetail.getInvoicePaymentSchedule().getId();
         } else {
@@ -1018,28 +1019,24 @@
             if (previousRow.getField("ISRECEIPT").equalsIgnoreCase("Y"))
               FieldProviderFactory.setField(previousRow, "TRANS_AMOUNT", amountSum.toString());
             else
-              FieldProviderFactory.setField(previousRow, "TRANS_AMOUNT", amountSum.negate()
-                  .toString());
+              FieldProviderFactory.setField(previousRow, "TRANS_AMOUNT",
+                  amountSum.negate().toString());
             FieldProviderFactory.setField(previousRow, "BALANCE", balanceSum.toString());
             if (previousConvRate == null) {
               if (previousRow.getField("ISRECEIPT").equalsIgnoreCase("Y"))
                 FieldProviderFactory.setField(previousRow, "BASE_AMOUNT", amountSum.toString());
               else
-                FieldProviderFactory.setField(previousRow, "BASE_AMOUNT", amountSum.negate()
-                    .toString());
+                FieldProviderFactory.setField(previousRow, "BASE_AMOUNT",
+                    amountSum.negate().toString());
             } else {
               final int stdPrecission = previousConvRate.getToCurrency().getStandardPrecision()
                   .intValue();
               if (previousRow.getField("ISRECEIPT").equalsIgnoreCase("Y"))
-                FieldProviderFactory.setField(
-                    previousRow,
-                    "BASE_AMOUNT",
+                FieldProviderFactory.setField(previousRow, "BASE_AMOUNT",
                     amountSum.multiply(previousConvRate.getMultipleRateBy())
                         .setScale(stdPrecission, BigDecimal.ROUND_HALF_UP).toString());
               else
-                FieldProviderFactory.setField(
-                    previousRow,
-                    "BASE_AMOUNT",
+                FieldProviderFactory.setField(previousRow, "BASE_AMOUNT",
                     amountSum.multiply(previousConvRate.getMultipleRateBy())
                         .setScale(stdPrecission, BigDecimal.ROUND_HALF_UP).negate().toString());
             }
@@ -1123,21 +1120,17 @@
           if (previousRow.getField("ISRECEIPT").equalsIgnoreCase("Y"))
             FieldProviderFactory.setField(previousRow, "BASE_AMOUNT", amountSum.toString());
           else
-            FieldProviderFactory
-                .setField(previousRow, "BASE_AMOUNT", amountSum.negate().toString());
+            FieldProviderFactory.setField(previousRow, "BASE_AMOUNT",
+                amountSum.negate().toString());
         } else {
           final int stdPrecission = previousConvRate.getToCurrency().getStandardPrecision()
               .intValue();
           if (previousRow.getField("ISRECEIPT").equalsIgnoreCase("Y"))
-            FieldProviderFactory.setField(
-                previousRow,
-                "BASE_AMOUNT",
+            FieldProviderFactory.setField(previousRow, "BASE_AMOUNT",
                 amountSum.multiply(previousConvRate.getMultipleRateBy())
                     .setScale(stdPrecission, BigDecimal.ROUND_HALF_UP).toString());
           else
-            FieldProviderFactory.setField(
-                previousRow,
-                "BASE_AMOUNT",
+            FieldProviderFactory.setField(previousRow, "BASE_AMOUNT",
                 amountSum.multiply(previousConvRate.getMultipleRateBy())
                     .setScale(stdPrecission, BigDecimal.ROUND_HALF_UP).negate().toString());
         }
@@ -1204,7 +1197,7 @@
   private boolean insertIntoTotal(FieldProvider data,
       java.util.List<FIN_FinaccTransaction> transactionsList, ArrayList<FieldProvider> totalData,
       String strGroupCrit, String strOrdCrit, String strConvertCurrency, String strConversionDate)
-      throws OBException {
+          throws OBException {
 
     while (transactionsList.size() > 0
         && transactionIsBefore(transactionsList.get(0), data, strGroupCrit, strOrdCrit)) {
@@ -1235,19 +1228,19 @@
 
     // bp_group -- bp_category
     if (transaction.getBusinessPartner() != null) {
-      FieldProviderFactory.setField(transactionData, "BP_GROUP", transaction.getBusinessPartner()
-          .getBusinessPartnerCategory().getName());
+      FieldProviderFactory.setField(transactionData, "BP_GROUP",
+          transaction.getBusinessPartner().getBusinessPartnerCategory().getName());
       // bpartner
-      FieldProviderFactory.setField(transactionData, "BPARTNER", transaction.getBusinessPartner()
-          .getName());
+      FieldProviderFactory.setField(transactionData, "BPARTNER",
+          transaction.getBusinessPartner().getName());
     } else {
       // bp_group -- bp_category & bpartner
       FieldProviderFactory.setField(transactionData, "BP_GROUP", "");
       FieldProviderFactory.setField(transactionData, "BPARTNER", "");
     }
     // transCurrency
-    FieldProviderFactory.setField(transactionData, "TRANS_CURRENCY", transaction.getCurrency()
-        .getISOCode());
+    FieldProviderFactory.setField(transactionData, "TRANS_CURRENCY",
+        transaction.getCurrency().getISOCode());
     // paymentMethod
     FieldProviderFactory.setField(transactionData, "PAYMENT_METHOD", "");
     // payment
@@ -1264,8 +1257,8 @@
     // payment yes / no
     FieldProviderFactory.setField(transactionData, "PAYMENT_Y_N", "Display:None");
     // financialAccount
-    FieldProviderFactory.setField(transactionData, "FINANCIAL_ACCOUNT", transaction.getAccount()
-        .getName());
+    FieldProviderFactory.setField(transactionData, "FINANCIAL_ACCOUNT",
+        transaction.getAccount().getName());
     // status
     FieldProviderFactory.setField(transactionData, "STATUS",
         translateRefList(transaction.getStatus()));
@@ -1313,8 +1306,8 @@
 
     Currency baseCurrency = OBDal.getInstance().get(Currency.class, strConvertCurrency);
 
-    boolean sameCurrency = baseCurrency.getISOCode().equalsIgnoreCase(
-        transaction.getCurrency().getISOCode());
+    boolean sameCurrency = baseCurrency.getISOCode()
+        .equalsIgnoreCase(transaction.getCurrency().getISOCode());
 
     if (!sameCurrency) {
       convRate = this.getConversionRate(transaction.getCurrency(), baseCurrency, strConversionDate);
@@ -1322,14 +1315,12 @@
       if (convRate != null) {
         final int stdPrecission = convRate.getToCurrency().getStandardPrecision().intValue();
         FieldProviderFactory.setField(transactionData, "TRANS_AMOUNT", transAmount.toString());
-        FieldProviderFactory.setField(
-            transactionData,
-            "BASE_AMOUNT",
+        FieldProviderFactory.setField(transactionData, "BASE_AMOUNT",
             transAmount.multiply(convRate.getMultipleRateBy())
                 .setScale(stdPrecission, BigDecimal.ROUND_HALF_UP).toString());
       } else {
-        String message = transaction.getCurrency().getISOCode() + " -> "
-            + baseCurrency.getISOCode() + " " + strConversionDate;
+        String message = transaction.getCurrency().getISOCode() + " -> " + baseCurrency.getISOCode()
+            + " " + strConversionDate;
 
         throw new OBException(message);
       }
@@ -1415,7 +1406,8 @@
         if (strProject.equals(data.getField("PROJECT"))) {
           isBefore = isBeforeStatusAndOrder(transaction, data, strOrdCrit, BPName, BPCategory,
               strProject);
-        } else if ((pos < posData || data.getField("PROJECT").equals("")) && !strProject.equals("")) {
+        } else if ((pos < posData || data.getField("PROJECT").equals(""))
+            && !strProject.equals("")) {
           isBefore = true;
         }
       } else if (strGroupCrit.equalsIgnoreCase("FINPR_BPartner_Category")) {
@@ -1508,8 +1500,8 @@
         int posData = bpCategoryList.indexOf(data.getField("BP_GROUP"));
         int pos = bpCategoryList.indexOf(BPCategory);
 
-        isBefore = isBefore
-            || (((pos < posData) || data.getField("BP_GROUP").equals("")) && !BPCategory.equals(""));
+        isBefore = isBefore || (((pos < posData) || data.getField("BP_GROUP").equals(""))
+            && !BPCategory.equals(""));
       }
       if (strOrdCritList[i].contains("APRM_FATS_BPARTNER")) {
         if (bpList == null) {
@@ -1522,9 +1514,8 @@
             || (((pos < posData) || data.getField("BPARTNER").equals("")) && !BPName.equals(""));
       }
       if (strOrdCritList[i].contains("INS_CURRENCY")) {
-        isBefore = isBefore
-            || (transaction.getCurrency().getISOCode().toString()
-                .compareTo(data.getField("TRANS_CURRENCY")) < 0);
+        isBefore = isBefore || (transaction.getCurrency().getISOCode().toString()
+            .compareTo(data.getField("TRANS_CURRENCY")) < 0);
       }
       if (strOrdCritList[i].equalsIgnoreCase("DueDate")) {
         Date dataDate = FIN_Utility.getDate(data.getField("DUE_DATE"));
@@ -1536,9 +1527,8 @@
         }
         int posData = acctList.indexOf(data.getField("FINANCIAL_ACCOUNT"));
         int pos = acctList.indexOf(transaction.getAccount().getName());
-        isBefore = isBefore
-            || (((pos < posData) || data.getField("FINANCIAL_ACCOUNT").equals("")) && !transaction
-                .getAccount().getName().equals(""));
+        isBefore = isBefore || (((pos < posData) || data.getField("FINANCIAL_ACCOUNT").equals(""))
+            && !transaction.getAccount().getName().equals(""));
       }
       return isBefore;
     } else {
@@ -1640,8 +1630,8 @@
     try {
       OBCriteria<List> obCriteria = OBDal.getInstance().createCriteria(List.class);
       obCriteria.createAlias(List.PROPERTY_REFERENCE, "r", OBCriteria.LEFT_JOIN);
-      obCriteria.add(Restrictions.ilike("r."
-          + org.openbravo.model.ad.domain.Reference.PROPERTY_NAME, "FIN_Payment status"));
+      obCriteria.add(Restrictions.ilike(
+          "r." + org.openbravo.model.ad.domain.Reference.PROPERTY_NAME, "FIN_Payment status"));
       obCriteria.add(Restrictions.in(List.PROPERTY_SEARCHKEY, strStatus));
       obCriteria.addOrderBy(List.PROPERTY_SEQUENCENUMBER, true);
       obCriteria.addOrderBy(List.PROPERTY_SEARCHKEY, true);
@@ -1676,28 +1666,28 @@
       organizations = new Organization[1];
       organizations[0] = OBDal.getInstance().get(Organization.class, strOrg);
     }
-    java.util.List<BusinessPartner> bPartners = OBDao.getOBObjectListFromString(
-        BusinessPartner.class, strcBPartnerIdIN);
+    java.util.List<BusinessPartner> bPartners = OBDao
+        .getOBObjectListFromString(BusinessPartner.class, strcBPartnerIdIN);
     java.util.List<Project> projects = OBDao.getOBObjectListFromString(Project.class,
         strcProjectIdIN);
     OBContext.setAdminMode(true);
     try {
-      OBCriteria<FIN_FinaccTransaction> obCriteriaTrans = OBDal.getInstance().createCriteria(
-          FIN_FinaccTransaction.class);
+      OBCriteria<FIN_FinaccTransaction> obCriteriaTrans = OBDal.getInstance()
+          .createCriteria(FIN_FinaccTransaction.class);
       obCriteriaTrans.createAlias(FIN_FinaccTransaction.PROPERTY_BUSINESSPARTNER, "bp",
           OBCriteria.LEFT_JOIN);
       obCriteriaTrans.createAlias("bp." + BusinessPartner.PROPERTY_BUSINESSPARTNERCATEGORY, "bpc",
           OBCriteria.LEFT_JOIN);
-      obCriteriaTrans
-          .createAlias(FIN_FinaccTransaction.PROPERTY_PROJECT, "p", OBCriteria.LEFT_JOIN);
+      obCriteriaTrans.createAlias(FIN_FinaccTransaction.PROPERTY_PROJECT, "p",
+          OBCriteria.LEFT_JOIN);
       obCriteriaTrans.createAlias(FIN_FinaccTransaction.PROPERTY_CURRENCY, "c",
           OBCriteria.LEFT_JOIN);
       obCriteriaTrans.createAlias(FIN_FinaccTransaction.PROPERTY_ACCOUNT, "acc",
           OBCriteria.LEFT_JOIN);
       obCriteriaTrans.add(Restrictions.isNull(FIN_FinaccTransaction.PROPERTY_FINPAYMENT));
       obCriteriaTrans.add(Restrictions.eq(FIN_FinaccTransaction.PROPERTY_PROCESSED, true));
-      obCriteriaTrans.add(Restrictions.in(FIN_FinaccTransaction.PROPERTY_ORGANIZATION,
-          organizations));
+      obCriteriaTrans
+          .add(Restrictions.in(FIN_FinaccTransaction.PROPERTY_ORGANIZATION, organizations));
 
       // Empty Business Partner included
       if (strcNoBusinessPartner.equals("include")) {
@@ -1711,9 +1701,10 @@
 
         // BPartner Category
         if (!strcBPGroupIdIN.equals("")) {
-          obCriteriaTrans.add(Restrictions.or(Restrictions.eq("bp."
-              + BusinessPartner.PROPERTY_BUSINESSPARTNERCATEGORY, strcBPGroupIdIN), Restrictions
-              .isNull(FIN_FinaccTransaction.PROPERTY_BUSINESSPARTNER)));
+          obCriteriaTrans.add(Restrictions.or(
+              Restrictions.eq("bp." + BusinessPartner.PROPERTY_BUSINESSPARTNERCATEGORY,
+                  strcBPGroupIdIN),
+              Restrictions.isNull(FIN_FinaccTransaction.PROPERTY_BUSINESSPARTNER)));
         }
 
         // Empty Business Partner excluded
@@ -1721,19 +1712,19 @@
 
         // BPartners
         if (!bPartners.isEmpty()) {
-          obCriteriaTrans.add(Restrictions.in(FIN_FinaccTransaction.PROPERTY_BUSINESSPARTNER,
-              bPartners));
+          obCriteriaTrans
+              .add(Restrictions.in(FIN_FinaccTransaction.PROPERTY_BUSINESSPARTNER, bPartners));
         }
 
         // BPartner Category
         if (!strcBPGroupIdIN.equals("")) {
-          obCriteriaTrans.add(Restrictions.eq("bp."
-              + BusinessPartner.PROPERTY_BUSINESSPARTNERCATEGORY, strcBPGroupIdIN));
+          obCriteriaTrans.add(Restrictions
+              .eq("bp." + BusinessPartner.PROPERTY_BUSINESSPARTNERCATEGORY, strcBPGroupIdIN));
         }
 
         if (bPartners.isEmpty() && strcBPGroupIdIN.equals("")) {
-          obCriteriaTrans.add(Restrictions
-              .isNotNull(FIN_FinaccTransaction.PROPERTY_BUSINESSPARTNER));
+          obCriteriaTrans
+              .add(Restrictions.isNotNull(FIN_FinaccTransaction.PROPERTY_BUSINESSPARTNER));
         }
 
         // Only empty Business Partners
@@ -1743,8 +1734,8 @@
 
       // Financial Account
       if (!strFinancialAccountId.equals("")) {
-        obCriteriaTrans.add(Restrictions.eq(FIN_FinaccTransaction.PROPERTY_ACCOUNT, OBDal
-            .getInstance().get(FIN_FinancialAccount.class, strFinancialAccountId)));
+        obCriteriaTrans.add(Restrictions.eq(FIN_FinaccTransaction.PROPERTY_ACCOUNT,
+            OBDal.getInstance().get(FIN_FinancialAccount.class, strFinancialAccountId)));
       }
 
       // Document Date, Payment Date & Due Date
@@ -1775,16 +1766,18 @@
 
       // Amount
       if (!strAmountFrom.equals("")) {
-        obCriteriaTrans.add(Restrictions.or(Restrictions.ge(
-            FIN_FinaccTransaction.PROPERTY_DEPOSITAMOUNT, new BigDecimal(strAmountFrom)),
-            Restrictions.ge(FIN_FinaccTransaction.PROPERTY_PAYMENTAMOUNT, new BigDecimal(
-                strAmountFrom))));
+        obCriteriaTrans.add(Restrictions.or(
+            Restrictions.ge(FIN_FinaccTransaction.PROPERTY_DEPOSITAMOUNT,
+                new BigDecimal(strAmountFrom)),
+            Restrictions.ge(FIN_FinaccTransaction.PROPERTY_PAYMENTAMOUNT,
+                new BigDecimal(strAmountFrom))));
       }
       if (!strAmountTo.equals("")) {
-        obCriteriaTrans.add(Restrictions.or(Restrictions.le(
-            FIN_FinaccTransaction.PROPERTY_DEPOSITAMOUNT, new BigDecimal(strAmountTo)),
-            Restrictions.le(FIN_FinaccTransaction.PROPERTY_PAYMENTAMOUNT, new BigDecimal(
-                strAmountTo))));
+        obCriteriaTrans.add(Restrictions.or(
+            Restrictions.le(FIN_FinaccTransaction.PROPERTY_DEPOSITAMOUNT,
+                new BigDecimal(strAmountTo)),
+            Restrictions.le(FIN_FinaccTransaction.PROPERTY_PAYMENTAMOUNT,
+                new BigDecimal(strAmountTo))));
       }
 
       // Projects
@@ -1804,8 +1797,8 @@
 
       // Currency
       if (!strcCurrency.equals("")) {
-        obCriteriaTrans.add(Restrictions.eq(FIN_FinaccTransaction.PROPERTY_CURRENCY, OBDal
-            .getInstance().get(Currency.class, strcCurrency)));
+        obCriteriaTrans.add(Restrictions.eq(FIN_FinaccTransaction.PROPERTY_CURRENCY,
+            OBDal.getInstance().get(Currency.class, strcCurrency)));
       }
 
       // payment type
@@ -1881,20 +1874,20 @@
     long currentTime = 0;
     // project
     if (paymentSchedule.getInvoice().getProject() != null)
-      FieldProviderFactory.setField(data, "PROJECT", paymentSchedule.getInvoice().getProject()
-          .getIdentifier());
+      FieldProviderFactory.setField(data, "PROJECT",
+          paymentSchedule.getInvoice().getProject().getIdentifier());
     else
       FieldProviderFactory.setField(data, "PROJECT", "");
     // salesPerson
     if (paymentSchedule.getInvoice().getSalesRepresentative() != null) {
-      FieldProviderFactory.setField(data, "SALES_PERSON", paymentSchedule.getInvoice()
-          .getSalesRepresentative().getIdentifier());
+      FieldProviderFactory.setField(data, "SALES_PERSON",
+          paymentSchedule.getInvoice().getSalesRepresentative().getIdentifier());
     } else {
       FieldProviderFactory.setField(data, "SALES_PERSON", "");
     }
     // invoiceNumber
-    FieldProviderFactory.setField(data, "INVOICE_NUMBER", (creditPaysInvoice ? "*" : "")
-        + paymentSchedule.getInvoice().getDocumentNo());
+    FieldProviderFactory.setField(data, "INVOICE_NUMBER",
+        (creditPaysInvoice ? "*" : "") + paymentSchedule.getInvoice().getDocumentNo());
     // payment plan id
     FieldProviderFactory.setField(data, "PAYMENT_PLAN_ID", paymentSchedule.getId());
     // payment plan yes / no
@@ -1905,8 +1898,8 @@
     invoicedDate = paymentSchedule.getInvoice().getInvoiceDate();
     FieldProviderFactory.setField(data, "INVOICE_DATE", dateFormat.format(invoicedDate).toString());
     // dueDate
-    FieldProviderFactory.setField(data, "DUE_DATE", dateFormat.format(paymentSchedule.getDueDate())
-        .toString());
+    FieldProviderFactory.setField(data, "DUE_DATE",
+        dateFormat.format(paymentSchedule.getDueDate()).toString());
     // expectedDate
     FieldProviderFactory.setField(data, "EXPECTED_DATE",
         dateFormat.format(paymentSchedule.getExpectedDate()).toString());
@@ -1916,9 +1909,11 @@
     // currentDSO
     if (fIN_PaymentScheduleDetail.getPaymentDetails() != null) {
       currentDSO = (((fIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment()
-          .getPaymentDate() != null) ? fIN_PaymentScheduleDetail.getPaymentDetails()
-          .getFinPayment().getPaymentDate().getTime() : 0) - invoicedDate.getTime())
-          / milisecDayConv;
+          .getPaymentDate() != null)
+              ? fIN_PaymentScheduleDetail.getPaymentDetails().getFinPayment().getPaymentDate()
+                  .getTime()
+              : 0)
+          - invoicedDate.getTime()) / milisecDayConv;
     } else {
       currentTime = System.currentTimeMillis();
       currentDSO = (currentTime - invoicedDate.getTime()) / milisecDayConv;
@@ -1938,8 +1933,8 @@
     OBContext.setAdminMode(true);
     try {
 
-      final OBCriteria<ConversionRate> obcConvRate = OBDal.getInstance().createCriteria(
-          ConversionRate.class);
+      final OBCriteria<ConversionRate> obcConvRate = OBDal.getInstance()
+          .createCriteria(ConversionRate.class);
       obcConvRate.add(Restrictions.eq(ConversionRate.PROPERTY_CURRENCY, transCurrency));
       obcConvRate.add(Restrictions.eq(ConversionRate.PROPERTY_TOCURRENCY, baseCurrency));
       obcConvRate.add(Restrictions.le(ConversionRate.PROPERTY_VALIDFROMDATE, conversionDateObj));
@@ -2001,8 +1996,8 @@
         obcTrl.add(Restrictions.eq("lr." + List.PROPERTY_SEARCHKEY, strCode));
         obcTrl.setFilterOnReadableClients(false);
         obcTrl.setFilterOnReadableOrganization(false);
-        strMessage = (obcTrl.list() != null && obcTrl.list().size() > 0) ? obcTrl.list().get(0)
-            .getName() : null;
+        strMessage = (obcTrl.list() != null && obcTrl.list().size() > 0)
+            ? obcTrl.list().get(0).getName() : null;
       }
       if ("en_US".equals(language.getLanguage()) || strMessage == null) {
         OBCriteria<List> obc = OBDal.getInstance().createCriteria(List.class);
@@ -2111,7 +2106,8 @@
     }
   }
 
-  public java.util.List<FIN_PaymentSchedule> getInvoicePaymentSchedules(FIN_Payment credit_payment) {
+  public java.util.List<FIN_PaymentSchedule> getInvoicePaymentSchedules(
+      FIN_Payment credit_payment) {
     final StringBuilder sql = new StringBuilder();
     sql.append(" select ps ");
     sql.append(" from FIN_Payment_Credit pc, FIN_Payment_Detail_V pdv, ");
@@ -2204,8 +2200,8 @@
 
   private void createBPList() {
     bpList = new ArrayList<String>();
-    OBCriteria<BusinessPartner> critBPartner = OBDal.getInstance().createCriteria(
-        BusinessPartner.class);
+    OBCriteria<BusinessPartner> critBPartner = OBDal.getInstance()
+        .createCriteria(BusinessPartner.class);
     critBPartner.addOrderBy(BusinessPartner.PROPERTY_NAME, true);
     for (BusinessPartner bp : critBPartner.list()) {
       bpList.add(bp.getName());
@@ -2232,8 +2228,8 @@
 
   private void createAcctList() {
     acctList = new ArrayList<String>();
-    OBCriteria<FIN_FinancialAccount> critAcct = OBDal.getInstance().createCriteria(
-        FIN_FinancialAccount.class);
+    OBCriteria<FIN_FinancialAccount> critAcct = OBDal.getInstance()
+        .createCriteria(FIN_FinancialAccount.class);
     critAcct.addOrderBy(FIN_FinancialAccount.PROPERTY_NAME, true);
     for (FIN_FinancialAccount acct : critAcct.list()) {
       acctList.add(acct.getName());
diff -ru org.openbravo.financial.paymentreport/src/org/openbravo/financial/paymentreport/erpCommon/ad_reports/PaymentReport.html /home/jnavarro/workspace/platino-prod/openbravo/modules/org.openbravo.financial.paymentreport/src/org/openbravo/financial/paymentreport/erpCommon/ad_reports/PaymentReport.html
--- org.openbravo.financial.paymentreport/src/org/openbravo/financial/paymentreport/erpCommon/ad_reports/PaymentReport.html	2016-02-29 04:45:56.000000000 +0100
+++ org.openbravo.financial.paymentreport/src/org/openbravo/financial/paymentreport/erpCommon/ad_reports/PaymentReport.html	2016-03-02 16:55:37.827205706 +0100
@@ -996,8 +996,14 @@
                       <option value=""> <div id="reportGroupCrit"></div> </option>
                     </select>
                   </td>
-                  <td class="ContentCell"></td>
-                  <td class="ContentCell"></td>
+                    <td class="TitleCell">
+                    <span class="LabelText">Sales Representative</span>
+                  </td>
+                  <td class="Combo_ContentCell" colspan="2">
+                    <select name="inpSalesrepId" id="paramSalesrepId" class="Combo Combo_TwoCells_width">
+                      <option value=""> <div id="reportSalesRep_ID"></div></option>
+                    </select>
+                  </td>
                   <td class="ContentCell"></td>
                 </tr>
                 
diff -ru org.openbravo.financial.paymentreport/src/org/openbravo/financial/paymentreport/erpCommon/ad_reports/PaymentReport.java /home/jnavarro/workspace/platino-prod/openbravo/modules/org.openbravo.financial.paymentreport/src/org/openbravo/financial/paymentreport/erpCommon/ad_reports/PaymentReport.java
--- org.openbravo.financial.paymentreport/src/org/openbravo/financial/paymentreport/erpCommon/ad_reports/PaymentReport.java	2016-02-29 04:45:56.000000000 +0100
+++ org.openbravo.financial.paymentreport/src/org/openbravo/financial/paymentreport/erpCommon/ad_reports/PaymentReport.java	2016-03-02 17:03:16.655210684 +0100
@@ -61,8 +61,8 @@
   private static final long serialVersionUID = 1L;
   private static PaymentReportDao dao;
 
-  public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException,
-      ServletException {
+  public void doPost(HttpServletRequest request, HttpServletResponse response)
+      throws IOException, ServletException {
     VariablesSecureApp vars = new VariablesSecureApp(request);
 
     if (vars.commandIn("DEFAULT")) {
@@ -71,8 +71,8 @@
           "PaymentReport|IncludeSubOrganization", "");
       String strDueDateFrom = vars.getGlobalVariable("inpDueDateFrom", "PaymentReport|DueDateFrom",
           "");
-      String strDueDateTo = vars
-          .getRequestGlobalVariable("inpDueDateTo", "PaymentReport|DueDateTo");
+      String strDueDateTo = vars.getRequestGlobalVariable("inpDueDateTo",
+          "PaymentReport|DueDateTo");
       String strExpectedDateFrom = vars.getGlobalVariable("inpExpectedDateFrom",
           "PaymentReport|ExpectedDateFrom", "");
       String strExpectedDateTo = vars.getRequestGlobalVariable("inpExpectedDateTo",
@@ -93,13 +93,15 @@
           "PaymentReport|BusinessPartner", "", IsIDFilter.instance);
       String strcBPGroupIdIN = vars.getGlobalVariable("inpcBPGroupId_IN",
           "PaymentReport|BusinessPartnerCategory", "");
+      String strsalesrepId = vars.getGlobalVariable("inpSalesrepId", "PaymentReport|SalesRepId", "",
+          IsIDFilter.instance);
       String strcNoBusinessPartner = vars.getGlobalVariable("inpcNoBPartner",
           "PaymentReport|noBusinessPartner", "include");
-      String strcProjectIdIN = vars.getInGlobalVariable("inpcProjectId_IN",
-          "PaymentReport|Project", "", IsIDFilter.instance);
+      String strcProjectIdIN = vars.getInGlobalVariable("inpcProjectId_IN", "PaymentReport|Project",
+          "", IsIDFilter.instance);
       dao = new PaymentReportDao();
-      String strfinPaymSt = vars.getInGlobalVariable("inpfinPaymSt", "", "", new ValueListFilter(
-          dao.getReferenceListValues("FIN_Payment status", true)));
+      String strfinPaymSt = vars.getInGlobalVariable("inpfinPaymSt", "", "",
+          new ValueListFilter(dao.getReferenceListValues("FIN_Payment status", true)));
       String strPaymentMethodId = vars.getGlobalVariable("inpPaymentMethodId",
           "PaymentReport|PaymentMethodId", "", IsIDFilter.instance);
       String strFinancialAccountId = vars.getGlobalVariable("inpFinancialAccountId",
@@ -135,7 +137,7 @@
           strDocumentDateTo, strcBPartnerIdIN, strcBPGroupIdIN, strcNoBusinessPartner,
           strcProjectIdIN, strfinPaymSt, strPaymentMethodId, strFinancialAccountId, strcCurrency,
           strConvertCurrency, strConversionDate, strPaymType, strOverdue, strGroupCrit, strOrdCrit,
-          strInclPaymentUsingCredit, strPaymentDateFrom, strPaymentDateTo);
+          strInclPaymentUsingCredit, strPaymentDateFrom, strPaymentDateTo, strsalesrepId);
       // DIRECT is used when coming from Aging Balance Report
     } else if (vars.commandIn("FIND", "DIRECT")) {
       String strOrg = vars.getRequestGlobalVariable("inpOrg", "PaymentReport|Organization");
@@ -143,8 +145,8 @@
           "PaymentReport|IncludeSubOrganization");
       String strDueDateFrom = vars.getRequestGlobalVariable("inpDueDateFrom",
           "PaymentReport|DueDateFrom");
-      String strDueDateTo = vars
-          .getRequestGlobalVariable("inpDueDateTo", "PaymentReport|DueDateTo");
+      String strDueDateTo = vars.getRequestGlobalVariable("inpDueDateTo",
+          "PaymentReport|DueDateTo");
       String strExpectedDateFrom = vars.getRequestGlobalVariable("inpExpectedDateFrom",
           "PaymentReport|ExpectedDateFrom");
       String strExpectedDateTo = vars.getRequestGlobalVariable("inpExpectedDateTo",
@@ -180,6 +182,8 @@
           "PaymentReport|noBusinessPartner");
       String strcProjectIdIN = vars.getRequestInGlobalVariable("inpcProjectId_IN",
           "PaymentReport|Project", IsIDFilter.instance);
+      String strsalesrepId = vars.getRequestGlobalVariable("inpSalesrepId",
+          "PaymentReport|SalesRepId", IsIDFilter.instance);
       dao = new PaymentReportDao();
       String strfinPaymSt = "";
       if (vars.commandIn("FIND")) {
@@ -198,11 +202,11 @@
           "PaymentReport|ConvertCurrency", IsIDFilter.instance);
       String strConversionDate = vars.getRequestGlobalVariable("inpConversionDate",
           "PaymentReport|ConversionDate");
-      String strPaymType = vars
-          .getRequestGlobalVariable("inpPaymType", "PaymentReport|PaymentType");
+      String strPaymType = vars.getRequestGlobalVariable("inpPaymType",
+          "PaymentReport|PaymentType");
       String strOverdue = vars.getRequestGlobalVariable("inpOverdue", "PaymentReport|Overdue");
-      String strGroupCrit = vars
-          .getRequestGlobalVariable("inpGroupCrit", "PaymentReport|GroupCrit");
+      String strGroupCrit = vars.getRequestGlobalVariable("inpGroupCrit",
+          "PaymentReport|GroupCrit");
       String strOrdCrit = vars.getRequestInGlobalVariable("inpShown", "PaymentReport|OrdCrit",
           new ValueListFilter("Date", "APRM_FATS_BPARTNER", "Project", "INS_CURRENCY",
               "FINPR_BPartner_Category", "ACCS_ACCOUNT_ID_D", "DueDate", ""));
@@ -214,15 +218,15 @@
           strDocumentDateTo, strcBPartnerIdIN, strcBPGroupIdIN, strcNoBusinessPartner,
           strcProjectIdIN, strfinPaymSt, strPaymentMethodId, strFinancialAccountId, strcCurrency,
           strConvertCurrency, strConversionDate, strPaymType, strOverdue, strGroupCrit, strOrdCrit,
-          strInclPaymentUsingCredit, strPaymentDateFrom, strPaymentDateTo);
+          strInclPaymentUsingCredit, strPaymentDateFrom, strPaymentDateTo, strsalesrepId);
     } else if (vars.commandIn("PDF", "XLS")) {
       String strOrg = vars.getRequestGlobalVariable("inpOrg", "PaymentReport|Organization");
       String strInclSubOrg = vars.getRequestGlobalVariable("inpInclSubOrg",
           "PaymentReport|IncludeSubOrganization");
       String strDueDateFrom = vars.getRequestGlobalVariable("inpDueDateFrom",
           "PaymentReport|DueDateFrom");
-      String strDueDateTo = vars
-          .getRequestGlobalVariable("inpDueDateTo", "PaymentReport|DueDateTo");
+      String strDueDateTo = vars.getRequestGlobalVariable("inpDueDateTo",
+          "PaymentReport|DueDateTo");
       String strExpectedDateFrom = vars.getRequestGlobalVariable("inpExpectedDateFrom",
           "PaymentReport|ExpectedDateFrom");
       String strExpectedDateTo = vars.getRequestGlobalVariable("inpExpectedDateTo",
@@ -260,11 +264,11 @@
           "PaymentReport|ConvertCurrency", IsIDFilter.instance);
       String strConversionDate = vars.getRequestGlobalVariable("inpConversionDate",
           "PaymentReport|ConversionDate");
-      String strPaymType = vars
-          .getRequestGlobalVariable("inpPaymType", "PaymentReport|PaymentType");
+      String strPaymType = vars.getRequestGlobalVariable("inpPaymType",
+          "PaymentReport|PaymentType");
       String strOverdue = vars.getRequestGlobalVariable("inpOverdue", "PaymentReport|Overdue");
-      String strGroupCrit = vars
-          .getRequestGlobalVariable("inpGroupCrit", "PaymentReport|GroupCrit");
+      String strGroupCrit = vars.getRequestGlobalVariable("inpGroupCrit",
+          "PaymentReport|GroupCrit");
       String strOrdCrit = vars.getRequestInGlobalVariable("inpShown", "PaymentReport|OrdCrit",
           new ValueListFilter("Date", "APRM_FATS_BPARTNER", "Project", "INS_CURRENCY",
               "FINPR_BPartner_Category", "ACCS_ACCOUNT_ID_D", "DueDate", ""));
@@ -272,6 +276,8 @@
       final String strInclPaymentUsingCredit = vars.getStringParameter("inpInclPaymentUsingCredit",
           "N");
       vars.setSessionValue("PaymentReport|IncludePaymentUsingCredit", strInclPaymentUsingCredit);
+      String strsalesrepId = vars.getRequestGlobalVariable("inpSalesrepId",
+          "PaymentReport|SalesRepId", IsIDFilter.instance);
       if (vars.commandIn("PDF"))
         strOutput = "pdf";
       else if (vars.commandIn("XLS"))
@@ -282,7 +288,8 @@
           strDocumentDateTo, strcBPartnerIdIN, strcBPGroupIdIN, strcNoBusinessPartner,
           strcProjectIdIN, strfinPaymSt, strPaymentMethodId, strFinancialAccountId, strcCurrency,
           strConvertCurrency, strConversionDate, strPaymType, strOverdue, strOutput, strGroupCrit,
-          strOrdCrit, strInclPaymentUsingCredit, strPaymentDateFrom, strPaymentDateTo);
+          strOrdCrit, strInclPaymentUsingCredit, strPaymentDateFrom, strPaymentDateTo,
+          strsalesrepId);
 
     } else if (vars.commandIn("LINK")) {
       String strTableId = vars.getRequiredStringParameter("inpAdTableId", IsIDFilter.instance);
@@ -299,8 +306,8 @@
         if (strWindowPath.equals("")) {
           strWindowPath = strDefaultServlet;
         }
-        response.sendRedirect(strWindowPath + "?" + "Command=DIRECT&" + inputName + "="
-            + strRecordId);
+        response
+            .sendRedirect(strWindowPath + "?" + "Command=DIRECT&" + inputName + "=" + strRecordId);
       }
     }
   }
@@ -314,7 +321,7 @@
       String strFinancialAccountId, String strcCurrency, String strConvertCurrency,
       String strConversionDate, String strPaymType, String strOverdue, String strGroupCrit,
       String strOrdCrit, String strInclPaymentUsingCredit, String strPaymentDateFrom,
-      String strPaymentDateTo) throws IOException, ServletException {
+      String strPaymentDateTo, String strsalesrepId) throws IOException, ServletException {
     if (log4j.isDebugEnabled())
       log4j.debug("Output: dataSheet");
     XmlDocument xmlDocument = null;
@@ -332,7 +339,7 @@
             strPaymentMethodId, strFinancialAccountId, strcCurrency, strConvertCurrency,
             strConversionDate, strPaymType, strOverdue, strGroupCrit, strOrdCrit,
             strInclPaymentUsingCredit, strPaymentDateFrom, strPaymentDateTo, strExpectedDateFrom,
-            strExpectedDateTo, "HTML");
+            strExpectedDateTo, strsalesrepId, "HTML");
       } catch (OBException e) {
         discardAL.add("sectionGroupCrit");
         discardAL.add("sectionStatus");
@@ -350,8 +357,8 @@
             Utility.messageBD(this, "ProcessStatus-W", vars.getLanguage()));
         String noConversionFound = "";
         if (e.getMessage() != null && e.getMessage().contains("->"))
-          noConversionFound = Utility
-              .messageBD(this, "FINPR_NoConversionFound", vars.getLanguage());
+          noConversionFound = Utility.messageBD(this, "FINPR_NoConversionFound",
+              vars.getLanguage());
         xmlDocument.setParameter("messageMessage",
             noConversionFound + Utility.messageBD(this, e.getMessage(), vars.getLanguage()));
       }
@@ -477,8 +484,8 @@
     xmlDocument.setParameter("org", strOrg);
     try {
       ComboTableData comboTableData = new ComboTableData(vars, this, "TABLEDIR", "AD_Org_ID", "",
-          "", Utility.getContext(this, vars, "#User_Org", "PaymentReport"), Utility.getContext(
-              this, vars, "#User_Client", "PaymentReport"), 0);
+          "", Utility.getContext(this, vars, "#User_Org", "PaymentReport"),
+          Utility.getContext(this, vars, "#User_Client", "PaymentReport"), 0);
       Utility.fillSQLParameters(this, vars, null, comboTableData, "PaymentReport", strOrg);
       xmlDocument.setData("reportAD_Org_ID", "liststructure", comboTableData.select(false));
       comboTableData = null;
@@ -493,25 +500,23 @@
     xmlDocument.setParameter("expectedDateFromdisplaySave",
         vars.getSessionValue("#AD_SqlDateFormat"));
     xmlDocument.setParameter("expectedDateTo", strExpectedDateTo);
-    xmlDocument
-        .setParameter("expectedDateTodisplaySave", vars.getSessionValue("#AD_SqlDateFormat"));
+    xmlDocument.setParameter("expectedDateTodisplaySave",
+        vars.getSessionValue("#AD_SqlDateFormat"));
     xmlDocument.setParameter("amountFrom", strAmountFrom);
     xmlDocument.setParameter("amountTo", strAmountTo);
     xmlDocument.setParameter("documentDateFrom", strDocumentDateFrom);
     xmlDocument.setParameter("documentDateFromdisplaySave",
         vars.getSessionValue("#AD_SqlDateFormat"));
     xmlDocument.setParameter("documentDateTo", strDocumentDateTo);
-    xmlDocument
-        .setParameter("documentDateTodisplaySave", vars.getSessionValue("#AD_SqlDateFormat"));
+    xmlDocument.setParameter("documentDateTodisplaySave",
+        vars.getSessionValue("#AD_SqlDateFormat"));
     xmlDocument.setParameter("paymentDateFrom", strPaymentDateFrom);
     xmlDocument.setParameter("paymentDateFromdisplaySave",
         vars.getSessionValue("#AD_SqlDateFormat"));
     xmlDocument.setParameter("paymentDateTo", strPaymentDateTo);
     xmlDocument.setParameter("paymentDateTodisplaySave", vars.getSessionValue("#AD_SqlDateFormat"));
 
-    xmlDocument.setData(
-        "paramcBPartnerId_IN",
-        "liststructure",
+    xmlDocument.setData("paramcBPartnerId_IN", "liststructure",
         SelectorUtilityData.selectBpartner(this,
             Utility.getContext(this, vars, "#AccessibleOrgTree", ""),
             Utility.getContext(this, vars, "#User_Client", ""), strcBPartnerIdIN));
@@ -530,9 +535,7 @@
 
     xmlDocument.setParameter("noBusinessPartner", strcNoBusinessPartner);
 
-    xmlDocument.setData(
-        "paramcProjectId_IN",
-        "liststructure",
+    xmlDocument.setData("paramcProjectId_IN", "liststructure",
         SelectorUtilityData.selectProject(this,
             Utility.getContext(this, vars, "#AccessibleOrgTree", ""),
             Utility.getContext(this, vars, "#User_Client", ""), strcProjectIdIN));
@@ -540,8 +543,9 @@
     xmlDocument.setParameter("selectedStatuses", strfinPaymSt);
     try {
       ComboTableData comboTableData = new ComboTableData(vars, this, "LIST", "",
-          "FIN_Payment status", "", Utility.getContext(this, vars, "#AccessibleOrgTree",
-              "PaymentReport"), Utility.getContext(this, vars, "#User_Client", "PaymentReport"), 0);
+          "FIN_Payment status", "",
+          Utility.getContext(this, vars, "#AccessibleOrgTree", "PaymentReport"),
+          Utility.getContext(this, vars, "#User_Client", "PaymentReport"), 0);
       Utility.fillSQLParameters(this, vars, null, comboTableData, "PaymentReport", strfinPaymSt);
       xmlDocument.setData("reportStatus", "liststructure", comboTableData.select(false));
       comboTableData = null;
@@ -552,9 +556,9 @@
     xmlDocument.setParameter("paymentMethodId", strPaymentMethodId);
     try {
       ComboTableData comboTableData = new ComboTableData(vars, this, "TABLEDIR",
-          "FIN_PaymentMethod_ID", "", "FIN_PaymentMethodsWithAccount", Utility.getContext(this,
-              vars, "#AccessibleOrgTree", "PaymentReport"), Utility.getContext(this, vars,
-              "#User_Client", "PaymentReport"), 0);
+          "FIN_PaymentMethod_ID", "", "FIN_PaymentMethodsWithAccount",
+          Utility.getContext(this, vars, "#AccessibleOrgTree", "PaymentReport"),
+          Utility.getContext(this, vars, "#User_Client", "PaymentReport"), 0);
       Utility.fillSQLParameters(this, vars, null, comboTableData, "PaymentReport",
           strPaymentMethodId);
       xmlDocument.setData("reportPaymentMethod_ID", "liststructure", comboTableData.select(false));
@@ -566,8 +570,9 @@
     xmlDocument.setParameter("financialAccountId", strFinancialAccountId);
     try {
       ComboTableData comboTableData = new ComboTableData(vars, this, "TABLEDIR",
-          "FIN_Financial_Account_ID", "", "", Utility.getContext(this, vars, "#AccessibleOrgTree",
-              "PaymentReport"), Utility.getContext(this, vars, "#User_Client", "PaymentReport"), 0);
+          "FIN_Financial_Account_ID", "", "",
+          Utility.getContext(this, vars, "#AccessibleOrgTree", "PaymentReport"),
+          Utility.getContext(this, vars, "#User_Client", "PaymentReport"), 0);
       Utility.fillSQLParameters(this, vars, null, comboTableData, "PaymentReport",
           strFinancialAccountId);
       xmlDocument.setData("reportFinancialAccount_ID", "liststructure",
@@ -596,17 +601,17 @@
           Utility.getContext(this, vars, "#User_Client", "PaymentReport"), 0);
       Utility.fillSQLParameters(this, vars, null, comboTableData, "PaymentReport",
           strConvertCurrency);
-      xmlDocument
-          .setData("reportConvertCurrency_ID", "liststructure", comboTableData.select(false));
+      xmlDocument.setData("reportConvertCurrency_ID", "liststructure",
+          comboTableData.select(false));
       comboTableData = null;
     } catch (Exception ex) {
       throw new ServletException(ex);
     }
     xmlDocument.setParameter("conversionDate", strConversionDate);
-    xmlDocument
-        .setParameter("conversionDatedisplaySave", vars.getSessionValue("#AD_SqlDateFormat"));
-    xmlDocument
-        .setParameter("conversionDatedisplaySave", vars.getSessionValue("#AD_SqlDateFormat"));
+    xmlDocument.setParameter("conversionDatedisplaySave",
+        vars.getSessionValue("#AD_SqlDateFormat"));
+    xmlDocument.setParameter("conversionDatedisplaySave",
+        vars.getSessionValue("#AD_SqlDateFormat"));
     xmlDocument.setParameter("paymType", strPaymType);
     xmlDocument.setParameter("inclPaymentUsingCredit", strInclPaymentUsingCredit);
 
@@ -717,6 +722,19 @@
     xmlDocument.setData("reportOrdCrit", "liststructure", objectListData);
     xmlDocument.setData("reportShown", "liststructure", PaymentReportDao.getObjectList(strOrdCrit));
 
+    xmlDocument.setParameter("salesrepId", strsalesrepId);
+    try {
+      ComboTableData comboTableData = new ComboTableData(vars, this, "TABLE", "SalesRep_ID",
+          "AD_User SalesRep", "",
+          Utility.getContext(this, vars, "#AccessibleOrgTree", "PaymentReport"),
+          Utility.getContext(this, vars, "#User_Client", "PaymentReport"), 0);
+      Utility.fillSQLParameters(this, vars, null, comboTableData, "PaymentReport", strsalesrepId);
+      xmlDocument.setData("reportSalesRep_ID", "liststructure", comboTableData.select(false));
+      comboTableData = null;
+    } catch (Exception ex) {
+      throw new ServletException(ex);
+    }
+
     xmlDocument.setParameter("showOneAsterisk", showAsterisk(data, "*") ? "" : "Display:none");
     xmlDocument.setParameter("showTwoAsterisk", showAsterisk(data, "**") ? "" : "Display:none");
 
@@ -731,12 +749,11 @@
       return false;
     boolean showAsterisk = false;
     for (final FieldProvider fp : data) {
-      if (fp.getField("INVOICE_NUMBER") != null
-          && !"".equals(fp.getField("INVOICE_NUMBER"))
+      if (fp.getField("INVOICE_NUMBER") != null && !"".equals(fp.getField("INVOICE_NUMBER"))
           && fp.getField("INVOICE_NUMBER").length() >= asterisk.length()
           && asterisk.equals(fp.getField("INVOICE_NUMBER").substring(0, asterisk.length()))
-          && !"*".equals(fp.getField("INVOICE_NUMBER").substring(asterisk.length(),
-              asterisk.length() + 1))) {
+          && !"*".equals(
+              fp.getField("INVOICE_NUMBER").substring(asterisk.length(), asterisk.length() + 1))) {
         showAsterisk = true;
         break;
       }
@@ -753,7 +770,8 @@
       String strPaymentMethodId, String strFinancialAccountId, String strcCurrency,
       String strConvertCurrency, String strConversionDate, String strPaymType, String strOverdue,
       String strOutput, String strGroupCrit, String strOrdCrit, String strInclPaymentUsingCredit,
-      String strPaymentDateFrom, String strPaymentDateTo) throws IOException, ServletException {
+      String strPaymentDateFrom, String strPaymentDateTo, String strsalesrepId)
+          throws IOException, ServletException {
 
     response.setContentType("text/html; charset=UTF-8");
 
@@ -762,11 +780,10 @@
     try {
       data = dao.getPaymentReport(vars, strOrg, strInclSubOrg, strDueDateFrom, strDueDateTo,
           strAmountFrom, strAmountTo, strDocumentDateFrom, strDocumentDateTo, strcBPartnerIdIN,
-          strcBPGroupIdIN, strcNoBusinessPartner, strcProjectIdIN, strfinPaymSt,
-          strPaymentMethodId, strFinancialAccountId, strcCurrency, strConvertCurrency,
-          strConversionDate, strPaymType, strOverdue, strGroupCrit, strOrdCrit,
-          strInclPaymentUsingCredit, strPaymentDateFrom, strPaymentDateTo, strExpectedDateFrom,
-          strExpectedDateTo, strOutput);
+          strcBPGroupIdIN, strcNoBusinessPartner, strcProjectIdIN, strfinPaymSt, strPaymentMethodId,
+          strFinancialAccountId, strcCurrency, strConvertCurrency, strConversionDate, strPaymType,
+          strOverdue, strGroupCrit, strOrdCrit, strInclPaymentUsingCredit, strPaymentDateFrom,
+          strPaymentDateTo, strExpectedDateFrom, strExpectedDateTo, strsalesrepId, strOutput);
     } catch (OBException e) {
       advisePopUp(request, response, "WARNING",
           Utility.messageBD(this, "ProcessStatus-W", vars.getLanguage()),
@@ -837,11 +854,11 @@
       strBPartnerShow = "";
       for (int i = 0; i < elements.length; i++)
         if (i < (elements.length - 1))
-          strBPartnerShow = strBPartnerShow.concat(dao
-              .getObject(BusinessPartner.class, elements[i]).getIdentifier()) + ", ";
+          strBPartnerShow = strBPartnerShow
+              .concat(dao.getObject(BusinessPartner.class, elements[i]).getIdentifier()) + ", ";
         else
-          strBPartnerShow = strBPartnerShow.concat(dao
-              .getObject(BusinessPartner.class, elements[i]).getIdentifier());
+          strBPartnerShow = strBPartnerShow
+              .concat(dao.getObject(BusinessPartner.class, elements[i]).getIdentifier());
     } else
       strBPartnerShow = "";
 
@@ -856,11 +873,11 @@
       strProjectShow = "";
       for (int i = 0; i < elements.length; i++)
         if (i < (elements.length - 1))
-          strProjectShow = strProjectShow.concat(dao.getObject(Project.class, elements[i])
-              .getIdentifier()) + ", ";
+          strProjectShow = strProjectShow
+              .concat(dao.getObject(Project.class, elements[i]).getIdentifier()) + ", ";
         else
-          strProjectShow = strProjectShow.concat(dao.getObject(Project.class, elements[i])
-              .getIdentifier());
+          strProjectShow = strProjectShow
+              .concat(dao.getObject(Project.class, elements[i]).getIdentifier());
     } else
       strProjectShow = "";
 
@@ -870,8 +887,8 @@
       strStatusShow = "";
       for (int i = 0; i < elements.length; i++)
         if (i < (elements.length - 1))
-          strStatusShow = strStatusShow.concat(PaymentReportDao.translateRefList(elements[i])
-              + ", ");
+          strStatusShow = strStatusShow
+              .concat(PaymentReportDao.translateRefList(elements[i]) + ", ");
         else
           strStatusShow = strStatusShow.concat(PaymentReportDao.translateRefList(elements[i]));
     } else
@@ -905,12 +922,11 @@
 
       for (int i = 0; i < elements.length; i++)
         if (i < (elements.length - 1))
-          strOrdCritShow = strOrdCritShow.concat(Utility.messageBD(this, elements[i],
-              vars.getLanguage())
-              + ", ");
+          strOrdCritShow = strOrdCritShow
+              .concat(Utility.messageBD(this, elements[i], vars.getLanguage()) + ", ");
         else
-          strOrdCritShow = strOrdCritShow.concat(Utility.messageBD(this, elements[i],
-              vars.getLanguage()));
+          strOrdCritShow = strOrdCritShow
+              .concat(Utility.messageBD(this, elements[i], vars.getLanguage()));
     } else
       strOrdCritShow = "";
 
diff -ru org.openbravo.financial.paymentreport/src/org/openbravo/financial/paymentreport/erpCommon/ad_reports/PaymentReport.xml /home/jnavarro/workspace/platino-prod/openbravo/modules/org.openbravo.financial.paymentreport/src/org/openbravo/financial/paymentreport/erpCommon/ad_reports/PaymentReport.xml
--- org.openbravo.financial.paymentreport/src/org/openbravo/financial/paymentreport/erpCommon/ad_reports/PaymentReport.xml	2016-02-29 04:45:56.000000000 +0100
+++ org.openbravo.financial.paymentreport/src/org/openbravo/financial/paymentreport/erpCommon/ad_reports/PaymentReport.xml	2016-03-02 17:06:13.263212599 +0100
@@ -119,6 +119,10 @@
   <SUBREPORT id="reportGroupCrit" name="reportGroupCrit" report="org/openbravo/erpCommon/reference/List">
     <ARGUMENT name="parameterListSelected" withId="paramGroupCrit"/>
   </SUBREPORT>
+    <PARAMETER id="paramSalesrepId" name="salesrepId" attribute="value"/>
+  <SUBREPORT id="reportSalesRep_ID" name="reportSalesRep_ID" report="org/openbravo/erpCommon/reference/List">
+    <ARGUMENT name="parameterListSelected" withId="paramSalesrepId"/>
+  </SUBREPORT>
   <PARAMETER id="paramOrdCrit" name="ordCrit" attribute="value"/>
   <SUBREPORT id="reportOrdCrit" name="reportOrdCrit" report="org/openbravo/erpCommon/reference/List">
     <ARGUMENT name="parameterListSelected" withId="paramOrdCrit"/>
