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); }
protected override SupplyRecord BuildGafRecordByDocumentTran(ARInvoice document, ARTran tran, ARTax tranTax, int lineNumberForGaf) { return(_supplyRecordBuilder.Build(GetExtendedInvoice(document), document, tran, tranTax, Customers[document.CustomerID], lineNumberForGaf)); }