Ejemplo n.º 1
0
        public static Amount CalculateSalesPostingAmount(PXGraph graph, DRSchedule customSchedule)
        {
            var netLinesAmount = new Amount(0m, 0m);

            var processedTrans = new HashSet <ARTran>();

            foreach (PXResult <ARTran, ARRegister, ARTax, Tax> item in PXSelectJoin <
                         ARTran,
                         InnerJoin <ARRegister, On <ARTran.tranType, Equal <ARRegister.docType>,
                                                    And <ARTran.refNbr, Equal <ARRegister.refNbr> > >,
                                    LeftJoin <ARTax,
                                              On <ARTran.tranType, Equal <ARTax.tranType>,
                                                  And <ARTran.refNbr, Equal <ARTax.refNbr>,
                                                       And <ARTran.lineNbr, Equal <ARTax.lineNbr> > > >,
                                              LeftJoin <Tax,
                                                        On <Tax.taxID, Equal <ARTax.taxID> > > > >,
                         Where <ARTran.tranType, Equal <Required <ARInvoice.docType> >,
                                And <ARTran.refNbr, Equal <Required <ARInvoice.refNbr> >,
                                     And <ARTran.deferredCode, IsNull,
                                          And <Where <ARTran.lineType, IsNull,
                                                      Or <ARTran.lineType, NotEqual <SO.SOLineType.discount> > > > > > > >
                     .Select(graph, customSchedule.DocType, customSchedule.RefNbr))
            {
                ARTran     line     = item;
                ARRegister register = item;
                ARTax      artax    = item;
                Tax        tax      = item;

                if (processedTrans.Contains(line))
                {
                    continue;
                }

                var netLineAmount = ARReleaseProcess.GetSalesPostingAmount(graph, register, line, artax, tax,
                                                                           amnt => PXDBCurrencyAttribute.Round(graph.Caches[typeof(ARTran)], line, amnt, CMPrecision.TRANCURY));

                netLinesAmount += netLineAmount;

                processedTrans.Add(line);
            }

            return(netLinesAmount);
        }
        public SupplyRecord Build(TExtendedInvoice extendedInvoice, ARRegister register, ARTran tran, ARTax tranTax, Customer customer, int lineNumber)
        {
            var supplyRecord = BuildInternal(register, tran, tranTax, lineNumber);

            _supplyRecordBuilderByCustomerData.Build(supplyRecord, register, customer);

            _countryBuilder.Build(supplyRecord, extendedInvoice);

            return(supplyRecord);
        }
Ejemplo n.º 3
0
 protected override SupplyRecord BuildGafRecordByDocumentTran(ARInvoice document, ARTran tran, ARTax tranTax, int lineNumberForGaf)
 {
     return(_supplyRecordBuilder.Build(GetExtendedInvoice(document), document, tran, tranTax, Customers[document.CustomerID], lineNumberForGaf));
 }