Advertisement
Evra70

a

Feb 8th, 2022
971
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 19.28 KB | None | 0 0
  1. package org.jleaf.erp.purch.bo.invoice;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. import org.apache.commons.validator.GenericValidator;
  7. import org.jleaf.common.ComboIdConstants;
  8. import org.jleaf.common.CommonExceptionConstants;
  9. import org.jleaf.core.BusinessFunction;
  10. import org.jleaf.core.BusinessTransaction;
  11. import org.jleaf.core.CoreException;
  12. import org.jleaf.core.DefaultBusinessTransaction;
  13. import org.jleaf.core.Dto;
  14. import org.jleaf.core.GeneralConstants;
  15. import org.jleaf.core.annotation.ErrorList;
  16. import org.jleaf.core.annotation.Info;
  17. import org.jleaf.core.annotation.InfoIn;
  18. import org.jleaf.core.annotation.InfoOut;
  19. import org.jleaf.erp.purch.PurchasingConstants;
  20. import org.jleaf.erp.purch.PurchasingConstantsForDlg;
  21. import org.jleaf.erp.purch.PurchasingExceptionConstants;
  22. import org.jleaf.erp.purch.dao.InvoiceAdditionalForDlgDao;
  23. import org.jleaf.erp.purch.dao.InvoiceCostDao;
  24. import org.jleaf.erp.purch.dao.InvoiceDao;
  25. import org.jleaf.erp.purch.dao.InvoiceTaxDao;
  26. import org.jleaf.erp.purch.entity.Invoice;
  27. import org.jleaf.erp.purch.entity.InvoiceAdditionalForDlg;
  28. import org.jleaf.erp.purch.entity.InvoiceCost;
  29. import org.jleaf.erp.purch.entity.InvoiceTax;
  30. import org.jleaf.util.Calc;
  31. import org.jleaf.util.DtoUtil;
  32. import org.jleaf.util.GsonUtil;
  33. import org.jleaf.util.ValidationUtil;
  34. import org.jleaf.validator.CommonBusinessValidator;
  35. import org.slf4j.Logger;
  36. import org.slf4j.LoggerFactory;
  37. import org.springframework.beans.factory.annotation.Autowired;
  38. import org.springframework.beans.factory.annotation.Qualifier;
  39. import org.springframework.stereotype.Service;
  40.  
  41. /**
  42.  *
  43.  * @author Didit Setya Bahari, Jul 14, 2015
  44.  *
  45.  * Fitra 28 Jun 2018, menambah validasi extDocNo(supplier doc no) unique per invoice per supplier dan tax no unique per invoice
  46.  *
  47.  **/
  48.  
  49. //@formatter:off
  50. @Service("editInvoice")
  51. @InfoIn(value = {
  52.         @Info(name = "id", description = "invoice id", type = Long.class),
  53.         @Info(name = "extDocNo", description = "external document no", type = String.class),
  54.         @Info(name = "extDocDate", description = "external document date", type = String.class),
  55.         @Info(name = "invoiceReceiptDate", description = "invoice receipt date", type = String.class),
  56.         @Info(name = "dueDate", description = "due date", type = String.class),
  57.         @Info(name = "remark", description = "remark", type = String.class),
  58.         @Info(name = "ouLegalId", description = "ou legal id", type = Long.class),
  59.         @Info(name = "costId", description = "cost id", type = Long.class),
  60.         @Info(name = "additionalDiscAmount", description = "additional disc amount", type = Double.class),
  61.         @Info(name = "costVersion", description = "cost version", type = Long.class),
  62.         @Info(name = "allocType", description = "alloc type", type = String.class),
  63.         @Info(name = "flgIncludeTaxAdditionalDisc", description = "flg include tax additional disc", type = String.class),
  64.         @Info(name = "additionalVersion", description = "invoice additional version", type = Long.class),
  65.         @Info(name = "invoiceTaxList", description = "invoice tax list (id, taxNo, taxDate, govTaxAmount, version)", type = List.class),
  66.         @Info(name = "version", description = "version", type = Long.class),
  67.         @Info(name = "tenantLoginId", description = "tenant login id", type = Long.class),
  68.         @Info(name = "userLoginId", description = "user login id", type = Long.class),
  69.         @Info(name = "roleLoginId", description = "role login id", type = Long.class),
  70.         @Info(name = "datetime", description = "datetime", type = String.class)
  71. })
  72. @InfoOut(value = {
  73.         @Info(name = "id", description = "invoice id", type = Long.class)
  74. })
  75. @ErrorList(errorKeys = {
  76.         CommonExceptionConstants.TENANT_LOGIN_CANT_USED,
  77.         CommonExceptionConstants.DATA_CANT_CHANGE_CAUSE_TENANT,
  78.         CommonExceptionConstants.OULEGAL_ID_NOT_FOUND,
  79.         CommonExceptionConstants.OU_ID_NOT_FOUND,
  80.         CommonExceptionConstants.OU_NOT_LEGAL_ENTITY,
  81.         PurchasingExceptionConstants.INVOICE_ID_NOT_FOUND,
  82.         PurchasingExceptionConstants.INVOICE_TAX_ID_NOT_FOUND,
  83.         PurchasingExceptionConstants.DOC_ALREADY_SUBMITTED,
  84.         PurchasingExceptionConstants.INVOICE_TAX_ERROR
  85. })
  86. //@formatter:on
  87. public class EditInvoiceForDlg extends DefaultBusinessTransaction implements BusinessTransaction {
  88.     private static final Logger log = LoggerFactory.getLogger(EditInvoiceForDlg.class);
  89.  
  90.     @Autowired
  91.     private InvoiceDao invoiceDao;
  92.    
  93.     @Autowired
  94.     private InvoiceAdditionalForDlgDao invoiceAdditionalForDlgDao;
  95.  
  96.     @Autowired
  97.     private InvoiceTaxDao invoiceTaxDao;
  98.    
  99.     @Autowired
  100.     private InvoiceCostDao invoiceCostDao;
  101.  
  102.     @Autowired
  103.     @Qualifier("findInvoiceById")
  104.     private BusinessFunction findInvoiceById;
  105.  
  106.     @Autowired
  107.     @Qualifier("findInvoiceCostById")
  108.     private BusinessFunction findInvoiceCostById;
  109.    
  110.     @Autowired
  111.     @Qualifier("findInvoiceAdditionalForDlgById")
  112.     private BusinessFunction findInvoiceAdditionalForDlgById;
  113.  
  114.     @Autowired
  115.     @Qualifier("valTenantLoginCanUse")
  116.     private BusinessFunction valTenantLoginCanUse;
  117.  
  118.     @Autowired
  119.     @Qualifier("valOUAsLegal")
  120.     private BusinessFunction valOUAsLegal;
  121.    
  122.     @Autowired
  123.     @Qualifier("findOULegalById")
  124.     private BusinessFunction findOULegalById;
  125.  
  126.     @Autowired
  127.     @Qualifier("findInvoiceTaxById")
  128.     private BusinessFunction findInvoiceTaxById;
  129.  
  130.     @Autowired
  131.     @Qualifier("valComboValueByCode")
  132.     private BusinessFunction valComboValueByCode;
  133.  
  134.     @Autowired
  135.     @Qualifier("calculateAmountFromGrossPriceDiscForPo")
  136.     private BusinessFunction calculateAmountFromGrossPriceDiscForPo;
  137.  
  138.     @Autowired
  139.     @Qualifier("getRoundingParameter")
  140.     private BusinessFunction getRoundingParameter;
  141.  
  142.     @Autowired
  143.     @Qualifier("getDigitDecimalCurrencyByDocType")
  144.     private BusinessFunction getDigitDecimalCurrencyByDocType;
  145.    
  146.     @Autowired
  147.     @Qualifier("valInvoiceHasUniqueTaxNo")
  148.     private BusinessFunction valInvoiceHasUniqueTaxNo;
  149.    
  150.     @Autowired
  151.     @Qualifier("valInvoiceHasUniqueExtDocBySupplier")
  152.     private BusinessFunction valInvoiceHasUniqueExtDocBySupplier;
  153.  
  154.     @Override
  155.     public Dto prepare(Dto inputDto, Dto originalDto) throws Exception {
  156.         // Validation tenant login id can be use
  157.         Dto loginDto = new Dto();
  158.         loginDto.put("tenantLoginId", inputDto.getLong("tenantLoginId"));
  159.         loginDto.put("userLoginId", inputDto.getLong("userLoginId"));
  160.         loginDto.put("roleLoginId", inputDto.getLong("roleLoginId"));
  161.         valTenantLoginCanUse.execute(loginDto);
  162.  
  163.         // Validation tidak boleh kosong / null / tanggal / etc
  164.         ValidationUtil.valBlankOrNull(inputDto.getString("extDocNo"), "Ext Document No");
  165.         ValidationUtil.valDate(inputDto.getString("extDocDate"), "Ext Document Date");
  166.         ValidationUtil.valNumeric(inputDto, "costId");
  167.         ValidationUtil.valNumber(inputDto, "additionalDiscAmount");
  168.         ValidationUtil.valNumeric(inputDto, "costVersion");
  169.         ValidationUtil.valBlankOrNull(inputDto, "allocType");
  170.         ValidationUtil.valBlankOrNull(inputDto, "flgIncludeTaxAdditionalDisc");
  171.         ValidationUtil.valNumeric(inputDto, "additionalVersion");
  172.        
  173.        
  174.         Long costId = inputDto.getLong("costId");
  175.         Long costVersion = inputDto.getLong("costVersion");
  176.         String allocType = inputDto.getString("allocType");
  177.         String flgIncludeTaxAdditionalDisc = inputDto.getString("flgIncludeTaxAdditionalDisc");
  178.         Long additionalVersion = inputDto.getLong("additionalVersion");
  179.        
  180.         if (!GeneralConstants.NULL_REF_VALUE_LONG.equals(inputDto.getLong("ouLegalId"))) {
  181.             Dto ouLegalDto = findOULegalById.execute(new Dto().put("id", inputDto.getLong("ouLegalId")));
  182.             valOUAsLegal.execute(new Dto().put("id", ouLegalDto.getLong("ouId")));
  183.         }
  184.  
  185.         Dto invoiceDto = findInvoiceById.execute(inputDto);
  186.         String docDate = invoiceDto.getString("docDate");
  187.         String extDocDate = inputDto.getString("extDocDate");
  188.         String invoiceReceiptDate = inputDto.getString("invoiceReceiptDate");
  189.        
  190.         //validasi supplier doc no harus unique per supplier
  191.         Dto inputValInvoiceHasUniqueExtDocBySupplier = new Dto();
  192.         inputValInvoiceHasUniqueExtDocBySupplier.put("id", inputDto.getLong("id"));
  193.         inputValInvoiceHasUniqueExtDocBySupplier.put("extDocNo", inputDto.getString("extDocNo"));
  194.         inputValInvoiceHasUniqueExtDocBySupplier.put("partnerId", invoiceDto.getLong("partnerId"));
  195.         valInvoiceHasUniqueExtDocBySupplier.execute(inputValInvoiceHasUniqueExtDocBySupplier);
  196.        
  197.         Dto inputDtoForRoundingParameter = new Dto();
  198.         inputDtoForRoundingParameter.put("tenantId", inputDto.getLong("tenantLoginId"));
  199.         Dto resultDtoForRoundingParameter = getRoundingParameter.execute(inputDtoForRoundingParameter);
  200.         int roundingModeNonTax = resultDtoForRoundingParameter.getInteger("roundingModeNonTax");
  201.         int scaleTax = resultDtoForRoundingParameter.getInteger("scaleTax");
  202.         int roundingModeTax = resultDtoForRoundingParameter.getInteger("roundingModeTax");     
  203.        
  204.         Dto paramDigitDecimalCurrency = new Dto();
  205.         paramDigitDecimalCurrency.put("tenantId", inputDto.getLong("tenantLoginId"));
  206.         paramDigitDecimalCurrency.put("docTypeId", PurchasingConstants.DOCUMENT_PURCH_INVOICE);
  207.         paramDigitDecimalCurrency.put("currCode", invoiceDto.getString("currCode"));
  208.         Dto resultDigitDecimalCurrency = getDigitDecimalCurrencyByDocType.execute(paramDigitDecimalCurrency);
  209.        
  210.         Integer decimalForRounding = resultDigitDecimalCurrency.getInteger("digit");
  211.        
  212.         // Rounding additional discount diawal, agar saat diproses selanjutnya, sudah dengan hasil ter rounding
  213.         Calc.rounding(inputDto, decimalForRounding, roundingModeNonTax, "additionalDiscAmount");
  214.         Double additionalDiscAmount = inputDto.getDouble("additionalDiscAmount");
  215.        
  216.         // header version validation
  217.         if (!invoiceDto.getLong("version").equals(inputDto.getLong("version"))) {
  218.             throw new CoreException(PurchasingExceptionConstants.DOCUMENT_VERSION_NOT_UPTODATE, "Purchase Invoice");
  219.         }
  220.        
  221.         if (!invoiceDto.getLong("tenantId").equals(inputDto.getLong("tenantLoginId"))) {
  222.             throw new CoreException(CommonExceptionConstants.DATA_CANT_CHANGE_CAUSE_TENANT, "Invoice");
  223.         }
  224.  
  225.         if (!PurchasingConstants.DRAFT_TRANSACTION.equals(invoiceDto.getString("statusDoc"))) {
  226.             throw new CoreException(PurchasingExceptionConstants.DOC_ALREADY_SUBMITTED);
  227.         }
  228.        
  229.         Dto invoiceCostDto = findInvoiceCostById.execute(new Dto().put("id", costId));
  230.         if (!invoiceCostDto.getLong("version").equals(costVersion)) {
  231.             throw new CoreException(PurchasingExceptionConstants.DOCUMENT_VERSION_NOT_UPTODATE, "Additional Discount");
  232.         }
  233.        
  234.         if (!invoiceCostDto.getLong("tenantId").equals(inputDto.getLong("tenantLoginId"))) {
  235.             throw new CoreException(CommonExceptionConstants.DATA_CANT_CHANGE_CAUSE_TENANT, "Additonal Discount");
  236.         }
  237.        
  238.         Dto invoiceAdditionalDto = findInvoiceAdditionalForDlgById.execute(new Dto().put("id", invoiceDto.getLong("id")));
  239.         if (!invoiceAdditionalDto.getLong("version").equals(additionalVersion)) {
  240.             throw new CoreException(PurchasingExceptionConstants.DOCUMENT_VERSION_NOT_UPTODATE, "Additional Invoice");
  241.         }
  242.        
  243.         // Validasi invoiceReceiptDate memenuhi extDocDate <= invoiceReceiptDate <= docDate
  244.         // extDocDate <= invoiceReceitDate
  245.         boolean valExtDoc = !GenericValidator.isBlankOrNull(extDocDate)
  246.                 || !GenericValidator.isBlankOrNull(invoiceReceiptDate);
  247.         if (valExtDoc) {
  248.             CommonBusinessValidator.valCompareDate(extDocDate, invoiceReceiptDate, CommonBusinessValidator.COMPARE_LESS_EQUAL, "Ext Doc Date", "Invoice Receipt Date");
  249.         }
  250.  
  251.         // invoiceReceiptDate <= docDate
  252.         boolean valExtDoc1 = !GenericValidator.isBlankOrNull(invoiceReceiptDate)
  253.                 || !GenericValidator.isBlankOrNull(docDate);
  254.         if (valExtDoc1) {
  255.             CommonBusinessValidator.valCompareDate(invoiceReceiptDate, docDate, CommonBusinessValidator.COMPARE_LESS_EQUAL, "Invoice Receipt Date", "Doc Date");
  256.         }
  257.        
  258.         // validasi flgIncludeTaxAdditionalDisc (YES NO), harus terdaftar di combo
  259.         Dto paramFlgDeliveryDto = new Dto();
  260.         paramFlgDeliveryDto.put("comboId", ComboIdConstants.COMBO_YES_NO);
  261.         paramFlgDeliveryDto.put("code", flgIncludeTaxAdditionalDisc);
  262.         paramFlgDeliveryDto.put("varName", "Flag Include Tax Additional Disc");
  263.         valComboValueByCode.execute(paramFlgDeliveryDto);
  264.                
  265.         // validasi allocType, harus terdaftar di combo
  266.         paramFlgDeliveryDto = new Dto();
  267.         paramFlgDeliveryDto.put("comboId", PurchasingConstantsForDlg.COMBO_PURCH_DISC_ALLOC_TYPE);
  268.         paramFlgDeliveryDto.put("code", allocType);
  269.         paramFlgDeliveryDto.put("varName", "Alloc Type");
  270.         valComboValueByCode.execute(paramFlgDeliveryDto);
  271.        
  272.         invoiceDto.put("ouLegalId", inputDto.getLong("ouLegalId"));
  273.         invoiceDto.put("extDocNo", inputDto.getString("extDocNo"));
  274.         invoiceDto.put("extDocDate", inputDto.getString("extDocDate"));
  275.         invoiceDto.put("dueDate", inputDto.getString("dueDate"));
  276.         invoiceDto.put("remark", inputDto.getString("remark"));
  277.         invoiceDto.put("version", inputDto.getLong("version"));
  278.         this.prepareUpdateAudit(invoiceDto, inputDto.getLong("userLoginId"), inputDto.getString("datetime"));
  279.        
  280.         invoiceAdditionalDto.put("invoiceReceiptDate", inputDto.get("invoiceReceiptDate"));
  281.         invoiceAdditionalDto.put("allocType", allocType);
  282.         invoiceAdditionalDto.put("flgIncludeTaxAdditionalDisc", flgIncludeTaxAdditionalDisc);
  283.         invoiceAdditionalDto.put("addDiscAmount", additionalDiscAmount*-1);
  284.         this.prepareUpdateAudit(invoiceAdditionalDto, inputDto.getLong("userLoginId"), inputDto.getString("datetime"));
  285.        
  286.  
  287.         // SIMPAN ORIGINAL ADD AMOUNT UNTUK PERHITUNGAN TAX
  288.         Double originalAddDiscAmount = invoiceCostDto.getDouble("addAmount");
  289.         if(originalAddDiscAmount.doubleValue() != 0) {
  290.             originalAddDiscAmount = originalAddDiscAmount * -1;
  291.         }
  292.        
  293.         // simpan add amount dengan nilai dari additional amount, dengan nilai minus (jika tidak ada tax)
  294.         invoiceCostDto.put("addAmount", additionalDiscAmount*-1);
  295.        
  296.         @SuppressWarnings("unchecked")
  297.         List<Dto> invoiceTaxList = inputDto.getList("invoiceTaxList");
  298.         List<Dto> resultInvoiceTaxList = new ArrayList<Dto>();
  299.         List<Dto> failList = new ArrayList<Dto>();
  300.         List<Dto> successList = new ArrayList<Dto>();
  301.         if (invoiceTaxList != null && !invoiceTaxList.isEmpty()) {
  302.             for (Dto paramInvoiceTaxDto : invoiceTaxList) {
  303.                 try {
  304.                     //validasi tax no harus unique
  305.                     Dto inputValInvoiceHasUniqueTaxNo = new Dto();
  306.                     inputValInvoiceHasUniqueTaxNo.put("id", inputDto.getLong("id"));
  307.                     inputValInvoiceHasUniqueTaxNo.put("taxNo", paramInvoiceTaxDto.getString("taxNo"));
  308.                     valInvoiceHasUniqueTaxNo.execute(inputValInvoiceHasUniqueTaxNo);
  309.                    
  310.                     Dto invoiceTaxDto = findInvoiceTaxById.execute(new Dto().put("id", Long.valueOf(paramInvoiceTaxDto.getString("id"))));
  311.                    
  312.                     Dto paramCalculatePriceDto = new Dto();
  313.                     paramCalculatePriceDto.put("grossPriceBeforeDisc", additionalDiscAmount);
  314.                     paramCalculatePriceDto.put("qty", 1D);
  315.                     paramCalculatePriceDto.put("discountPercentage", 0D);
  316.                     paramCalculatePriceDto.put("discountAmount", 0D);
  317.                     paramCalculatePriceDto.put("decimalForRounding", decimalForRounding);
  318.                     paramCalculatePriceDto.put("roundingMode", roundingModeNonTax);
  319.                     paramCalculatePriceDto.put("flgTaxAmount", flgIncludeTaxAdditionalDisc);
  320.                     paramCalculatePriceDto.put("taxId", invoiceTaxDto.getLong("taxId"));
  321.                     paramCalculatePriceDto.put("flgDiscount", "A");
  322.                    
  323.                     Dto calculatePriceDto = calculateAmountFromGrossPriceDiscForPo.execute(paramCalculatePriceDto);
  324.                     Double nettPriceFromDiscount = calculatePriceDto.getDouble("nettPrice");
  325.                    
  326.                     Double baseAmount = new Calc(Double.valueOf(invoiceTaxDto.getString("baseAmount"))).add(originalAddDiscAmount)
  327.                                             .subtract(nettPriceFromDiscount).doubleValue();
  328.                    
  329.                     Double taxPercentage = invoiceTaxDto.getDouble("taxPercentage");
  330.                     Double taxAmount = new Calc(baseAmount).multiply(taxPercentage).divide(100, scaleTax, roundingModeTax).doubleValue();
  331.                    
  332.                     log.info("curr code tax vs curr code invoice : "+ invoiceTaxDto.getString("taxCurrCode")+ " vs "+invoiceDto.getString("currCode"));
  333.                    
  334.                     Double govTaxAmount =  invoiceTaxDto.getDouble("govTaxAmount");
  335.                     if(invoiceTaxDto.getString("taxCurrCode").equals(invoiceDto.getString("currCode"))) {
  336.                         govTaxAmount = taxAmount;
  337.                     }
  338.                    
  339.                     invoiceTaxDto.put("taxNo", paramInvoiceTaxDto.getString("taxNo"));
  340.                     invoiceTaxDto.put("taxDate", paramInvoiceTaxDto.getString("taxDate"));
  341.                     invoiceTaxDto.put("baseAmount", baseAmount);
  342.                     invoiceTaxDto.put("taxAmount", taxAmount);
  343.                     invoiceTaxDto.put("govTaxAmount", govTaxAmount);
  344.                     invoiceTaxDto.put("version", Long.valueOf(paramInvoiceTaxDto.getString("version")));
  345.  
  346.                     resultInvoiceTaxList.add(invoiceTaxDto);
  347.                    
  348.                     // simpan nett amount hasil perhitungan add disc amount ke add amount, dengan nilai minus ( jika ada pajak )
  349.                     invoiceCostDto.put("addAmount", calculatePriceDto.getDouble("nettAmount")*-1);
  350.                    
  351.                     Dto successDto = new Dto();
  352.                     successDto.put("id", invoiceTaxDto.getLong("id"));
  353.                     successDto.put("version", invoiceTaxDto.getLong("version"));
  354.                     successDto.put("taxNo", invoiceTaxDto.getString("taxNo"));
  355.                     successDto.put("taxDate", invoiceTaxDto.getString("taxDate"));
  356.                     successDto.put("govTaxAmount", invoiceTaxDto.getDouble("govTaxAmount"));
  357.                     successList.add(successDto);
  358.                 } catch (CoreException e) {
  359.                     paramInvoiceTaxDto.put("errorKey", e.getErrorKey());
  360.  
  361.                     List<Object> argsList = new ArrayList<Object>();
  362.                     if (e.getParamValues() != null && e.getParamValues().length > 0) for (Object paramValue : e.getParamValues()) {
  363.                         argsList.add(paramValue);
  364.                     }
  365.                     paramInvoiceTaxDto.put("args", argsList);
  366.  
  367.                     failList.add(paramInvoiceTaxDto);
  368.                 }
  369.             }
  370.         }
  371.        
  372.         if (!failList.isEmpty()) {
  373.             Dto errorParamDto = new Dto();
  374.             DtoUtil.putInErrorParamDto(errorParamDto, "failList",
  375.                     new String[] {"id", "taxNo", "taxDate", "govTaxAmount", "version", "errorKey", "args"}, failList);
  376.             throw new CoreException(PurchasingExceptionConstants.INVOICE_TAX_ERROR, errorParamDto);
  377.         }
  378.        
  379.         this.prepareUpdateAudit(invoiceCostDto, inputDto.getLong("userLoginId"), inputDto.getString("datetime"));
  380.  
  381.         inputDto.put("invoiceDto", invoiceDto);
  382.         inputDto.put("invoiceCostDto", invoiceCostDto);
  383.         inputDto.put("invoiceAdditionalDto", invoiceAdditionalDto);
  384.         inputDto.put("resultInvoiceTaxList", resultInvoiceTaxList);
  385.  
  386.         return null;
  387.     }
  388.  
  389.     @Override
  390.     public Dto process(Dto inputDto, Dto originalDto) throws Exception {
  391.         Dto outputDto = new Dto();
  392.        
  393.         Dto invoiceDto = inputDto.getDto("invoiceDto");
  394.         Invoice invoice = GsonUtil.fromDto(invoiceDto, Invoice.class);
  395.         invoice = invoiceDao.merge(invoiceDto.getLong("id"), invoice);
  396.        
  397.         Dto invoiceReceiptDateDto = inputDto.getDto("invoiceAdditionalDto");
  398.         InvoiceAdditionalForDlg invoiceAdditionalForDlg = GsonUtil.fromDto(invoiceReceiptDateDto, InvoiceAdditionalForDlg.class);
  399.         invoiceAdditionalForDlg = invoiceAdditionalForDlgDao.merge(invoiceReceiptDateDto.getLong("id"), invoiceAdditionalForDlg);
  400.        
  401.         Dto invoiceCostDto = inputDto.getDto("invoiceCostDto");
  402.         InvoiceCost invoiceCost = GsonUtil.fromDto(invoiceCostDto, InvoiceCost.class);
  403.         invoiceCost = invoiceCostDao.merge(invoiceCostDto.getLong("id"), invoiceCost);
  404.        
  405.         @SuppressWarnings("unchecked")
  406.         List<Dto> resultInvoiceTaxList = inputDto.getList("resultInvoiceTaxList");
  407.         for (Dto invoiceTaxDto : resultInvoiceTaxList) {
  408.             InvoiceTax invoiceTax = GsonUtil.fromDto(invoiceTaxDto, InvoiceTax.class);
  409.             invoiceTax = invoiceTaxDao.merge(invoiceTaxDto.getLong("id"), invoiceTax);
  410.            
  411.         }
  412.  
  413.         outputDto = new Dto(invoice);
  414.        
  415.         return outputDto;
  416.     }
  417.  
  418.     public String getDescription() {
  419.         return "Edit Invoice";
  420.     }
  421.    
  422. }
  423.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement