public static void CreatePPDCreditMemos(PXCache cache, ARPPDCreditMemoParameters filter, ARSetup setup, List <PendingPPDCreditMemoApp> docs) { int i = 0; bool failed = false; List <ARRegister> toRelease = new List <ARRegister>(); ARInvoiceEntry ie = PXGraph.CreateInstance <ARInvoiceEntry>(); ie.ARSetup.Current = setup; if (filter.GenerateOnePerCustomer == true) { if (filter.CreditMemoDate == null) { throw new PXSetPropertyException(CR.Messages.EmptyValueErrorFormat, PXUIFieldAttribute.GetDisplayName <ARPPDCreditMemoParameters.creditMemoDate>(cache)); } if (filter.FinPeriodID == null) { throw new PXSetPropertyException(CR.Messages.EmptyValueErrorFormat, PXUIFieldAttribute.GetDisplayName <ARPPDCreditMemoParameters.finPeriodID>(cache)); } Dictionary <PPDApplicationKey, List <PendingPPDCreditMemoApp> > dict = new Dictionary <PPDApplicationKey, List <PendingPPDCreditMemoApp> >(); foreach (PendingPPDCreditMemoApp doc in docs) { CurrencyInfo info = PXSelect <CurrencyInfo, Where <CurrencyInfo.curyInfoID, Equal <Required <CurrencyInfo.curyInfoID> > > > .Select(ie, doc.InvCuryInfoID); PPDApplicationKey key = new PPDApplicationKey(); doc.Index = i++; key.BranchID = doc.AdjdBranchID; key.BAccountID = doc.AdjdCustomerID; key.LocationID = doc.InvCustomerLocationID; key.CuryID = info.CuryID; key.CuryRate = info.CuryRate; key.AccountID = doc.AdjdARAcct; key.SubID = doc.AdjdARSub; key.TaxZoneID = doc.InvTaxZoneID; List <PendingPPDCreditMemoApp> list; if (!dict.TryGetValue(key, out list)) { dict[key] = list = new List <PendingPPDCreditMemoApp>(); } list.Add(doc); } foreach (List <PendingPPDCreditMemoApp> list in dict.Values) { ARInvoice invoice = CreatePPDCreditMemo(ie, filter, list); if (invoice != null) { toRelease.Add(invoice); } else { failed = true; } } } else { foreach (PendingPPDCreditMemoApp doc in docs) { List <PendingPPDCreditMemoApp> list = new List <PendingPPDCreditMemoApp>(1); doc.Index = i++; list.Add(doc); ARInvoice invoice = CreatePPDCreditMemo(ie, filter, list); if (invoice != null) { toRelease.Add(invoice); } else { failed = true; } } } if (setup.AutoReleasePPDCreditMemo == true && toRelease.Count > 0) { using (new PXTimeStampScope(null)) { ARDocumentRelease.ReleaseDoc(toRelease, true); } } if (failed) { throw new PXException(GL.Messages.DocumentsNotReleased); } }
public static void CreatePPDDebitAdjs(PXCache cache, APPPDDebitAdjParameters filter, APSetup setup, List <PendingPPDDebitAdjApp> docs) { int i = 0; bool failed = false; APInvoiceEntry ie = PXGraph.CreateInstance <APInvoiceEntry>(); ie.APSetup.Current = setup; if (filter.GenerateOnePerVendor == true) { if (filter.DebitAdjDate == null) { throw new PXSetPropertyException(CR.Messages.EmptyValueErrorFormat, PXUIFieldAttribute.GetDisplayName <APPPDDebitAdjParameters.debitAdjDate>(cache)); } if (filter.FinPeriodID == null) { throw new PXSetPropertyException(CR.Messages.EmptyValueErrorFormat, PXUIFieldAttribute.GetDisplayName <APPPDDebitAdjParameters.finPeriodID>(cache)); } Dictionary <PPDApplicationKey, List <PendingPPDDebitAdjApp> > dict = new Dictionary <PPDApplicationKey, List <PendingPPDDebitAdjApp> >(); foreach (PendingPPDDebitAdjApp pendingPPDDebitAdjApp in docs) { CurrencyInfo info = PXSelect <CurrencyInfo, Where <CurrencyInfo.curyInfoID, Equal <Required <CurrencyInfo.curyInfoID> > > > .Select(ie, pendingPPDDebitAdjApp.InvCuryInfoID); PPDApplicationKey key = new PPDApplicationKey(); pendingPPDDebitAdjApp.Index = i++; key.BranchID = pendingPPDDebitAdjApp.AdjdBranchID; key.BAccountID = pendingPPDDebitAdjApp.VendorID; key.LocationID = pendingPPDDebitAdjApp.InvVendorLocationID; key.CuryID = info.CuryID; key.CuryRate = info.CuryRate; key.AccountID = pendingPPDDebitAdjApp.AdjdAPAcct; key.SubID = pendingPPDDebitAdjApp.AdjdAPSub; key.TaxZoneID = pendingPPDDebitAdjApp.InvTaxZoneID; List <PendingPPDDebitAdjApp> list; if (!dict.TryGetValue(key, out list)) { dict[key] = list = new List <PendingPPDDebitAdjApp>(); } list.Add(pendingPPDDebitAdjApp); } foreach (List <PendingPPDDebitAdjApp> list in dict.Values) { APInvoice invoice = CreateAndReleasePPDDebitAdj(ie, filter, list, AutoReleaseDebitAdjustments); if (invoice == null) { failed = true; } } } else { foreach (PendingPPDDebitAdjApp pendingPPDDebitAdjApp in docs) { List <PendingPPDDebitAdjApp> list = new List <PendingPPDDebitAdjApp>(1); pendingPPDDebitAdjApp.Index = i++; list.Add(pendingPPDDebitAdjApp); APInvoice invoice = CreateAndReleasePPDDebitAdj(ie, filter, list, AutoReleaseDebitAdjustments); if (invoice == null) { failed = true; } } } if (failed) { throw new PXException(GL.Messages.DocumentsNotReleased); } }