public void OnReleaseComplete(ICADocument doc, OnReleaseCompleteDelegate baseMethod) { CAAdj cAAdj = doc as CAAdj; if (TWNGUIValidation.ActivateTWGUI(Base) == true && cAAdj != null && cAAdj.Released == true && cAAdj.AdjTranType == CATranType.CAAdjustment) { TWNReleaseProcess rp = PXGraph.CreateInstance <TWNReleaseProcess>(); PXSelectBase <TWNManualGUIBank> ViewManGUIBank = new SelectFrom <TWNManualGUIBank> .Where <TWNManualGUIBank.adjRefNbr.IsEqual <@P.AsString> > .View(Base); foreach (TWNManualGUIBank manualGUIBank in ViewManGUIBank.Cache.Cached) { if (PXCache <Tax> .GetExtension <TaxExt>(Tax.PK.Find(Base, manualGUIBank.TaxID)).UsrTWNGUI.Equals(false)) { continue; } using (PXTransactionScope ts = new PXTransactionScope()) { rp.CreateGUITrans(new STWNGUITran() { VATCode = manualGUIBank.VATInCode, GUINbr = manualGUIBank.GUINbr, GUIStatus = TWNGUIStatus.Used, BranchID = Base.CATranCashTrans_Ordered.Current.BranchID, GUIDirection = TWNGUIDirection.Receipt, GUIDate = manualGUIBank.GUIDate, GUITitle = (string)PXSelectorAttribute.GetField(ViewManGUIBank.Cache, manualGUIBank, typeof(APRegister.vendorID).Name, manualGUIBank.VendorID, typeof(Vendor.acctName).Name), TaxZoneID = manualGUIBank.TaxZoneID, TaxCategoryID = manualGUIBank.TaxCategoryID, TaxID = manualGUIBank.TaxID, TaxNbr = manualGUIBank.TaxNbr, OurTaxNbr = manualGUIBank.OurTaxNbr, NetAmount = manualGUIBank.NetAmt, TaxAmount = manualGUIBank.TaxAmt, AcctCD = (string)PXSelectorAttribute.GetField(ViewManGUIBank.Cache, manualGUIBank, typeof(APRegister.vendorID).Name, manualGUIBank.VendorID, typeof(Vendor.acctCD).Name), AcctName = (string)PXSelectorAttribute.GetField(ViewManGUIBank.Cache, manualGUIBank, typeof(APRegister.vendorID).Name, manualGUIBank.VendorID, typeof(Vendor.acctName).Name), DeductionCode = manualGUIBank.Deduction, Remark = manualGUIBank.Remark, OrderNbr = manualGUIBank.AdjRefNbr }); ts.Complete(Base); } } } baseMethod(doc); }
public void ReleaseDocProc(EPExpenseClaim claim, ReleaseDocProcDelegate baseMethod) { baseMethod(claim); if (TWNGUIValidation.ActivateTWGUI(Base) == true && claim != null && claim.Released == true) { ExpenseClaimEntry graph = PXGraph.CreateInstance <ExpenseClaimEntry>(); TWNReleaseProcess rp = PXGraph.CreateInstance <TWNReleaseProcess>(); Vendor vendor = new Vendor(); foreach (TWNManualGUIExpense manualGUIExp in SelectFrom <TWNManualGUIExpense> .Where <TWNManualGUIExpense.refNbr.IsEqual <@P.AsString> > .View.Select(Base, claim.RefNbr)) { if (PXCache <Tax> .GetExtension <TaxExt>(Tax.PK.Find(Base, manualGUIExp.TaxID)).UsrTWNGUI == false) { continue; } using (PXTransactionScope ts = new PXTransactionScope()) { if (manualGUIExp.VendorID != null) { vendor = SelectFrom <Vendor> .Where <Vendor.bAccountID.IsEqual <@P.AsInt> > .View.SelectSingleBound(Base, null, manualGUIExp.VendorID); } rp.CreateGUITrans(new STWNGUITran() { VATCode = manualGUIExp.VATInCode, GUINbr = manualGUIExp.GUINbr, GUIStatus = TWNGUIStatus.Used, BranchID = graph.ExpenseClaimDetailsCurrent.Current.BranchID, GUIDirection = TWNGUIDirection.Receipt, GUIDate = manualGUIExp.GUIDate, GUITitle = vendor.AcctName, TaxZoneID = manualGUIExp.TaxZoneID, TaxCategoryID = manualGUIExp.TaxCategoryID, TaxID = manualGUIExp.TaxID, TaxNbr = manualGUIExp.TaxNbr, OurTaxNbr = manualGUIExp.OurTaxNbr, NetAmount = manualGUIExp.NetAmt, TaxAmount = manualGUIExp.TaxAmt, AcctCD = vendor.AcctCD, AcctName = vendor.AcctName, DeductionCode = manualGUIExp.Deduction, Remark = manualGUIExp.Remark, OrderNbr = manualGUIExp.RefNbr }); ts.Complete(Base); } } } }
public void Persist(PersistDelegate baseMethod) { baseMethod(); APRegister doc = Base.APDocument.Current; APRegisterExt docExt = PXCache <APRegister> .GetExtension <APRegisterExt>(doc); // Check for document and released flag if (TWNGUIValidation.ActivateTWGUI(Base) == true && doc != null && doc.Released == true && doc.DocType.IsIn(APDocType.Invoice, APDocType.DebitAdj)) { //if (Base.APTaxTran_TranType_RefNbr.Current == null) //{ // throw new PXException(TWMessages.NoInvTaxDtls); //} foreach (TWNManualGUIAPBill row in SelectFrom <TWNManualGUIAPBill> .Where <TWNManualGUIAPBill.docType.IsEqual <@P.AsString> .And <TWNManualGUIAPBill.refNbr.IsEqual <@P.AsString> > > .View.Select(Base, doc.DocType, doc.RefNbr)) { // Avoid standard logic calling this method twice and inserting duplicate records into TWNGUITrans. if (CountExistedRec(Base, row.GUINbr, row.VATInCode, doc.RefNbr) >= 1) { return; } if (Tax.PK.Find(Base, row.TaxID).GetExtension <TaxExt>().UsrTWNGUI != true) { continue; } Vendor vendor = Vendor.PK.Find(Base, row.VendorID); using (PXTransactionScope ts = new PXTransactionScope()) { TWNReleaseProcess rp = PXGraph.CreateInstance <TWNReleaseProcess>(); TWNGUITrans tWNGUITrans = rp.InitAndCheckOnAP(row.GUINbr, row.VATInCode); rp.CreateGUITrans(new STWNGUITran() { VATCode = row.VATInCode, GUINbr = row.GUINbr, GUIStatus = TWNGUIStatus.Used, BranchID = Base.APTran_TranType_RefNbr.Current.BranchID, GUIDirection = TWNGUIDirection.Receipt, GUIDate = row.GUIDate, GUITitle = vendor?.AcctName, TaxZoneID = row.TaxZoneID, TaxCategoryID = row.TaxCategoryID, TaxID = row.TaxID, TaxNbr = row.TaxNbr, OurTaxNbr = row.OurTaxNbr, NetAmount = row.NetAmt, TaxAmount = row.TaxAmt, AcctCD = vendor?.AcctCD, AcctName = vendor?.AcctName, DeductionCode = row.Deduction, Remark = row.Remark, BatchNbr = doc.BatchNbr, OrderNbr = doc.RefNbr }); if (tWNGUITrans != null) { if (tWNGUITrans.NetAmtRemain < row.NetAmt) { throw new PXException(TWMessages.RemainAmt); } ViewGUITrans.SetValueExt <TWNGUITrans.netAmtRemain>(tWNGUITrans, (tWNGUITrans.NetAmtRemain -= row.NetAmt)); ViewGUITrans.SetValueExt <TWNGUITrans.taxAmtRemain>(tWNGUITrans, (tWNGUITrans.TaxAmtRemain -= row.TaxAmt)); tWNGUITrans = ViewGUITrans.Update(tWNGUITrans); } // Manually Saving as base code will not call base graph persis. ViewGUITrans.Cache.Persist(PXDBOperation.Insert); ViewGUITrans.Cache.Persist(PXDBOperation.Update); ts.Complete(Base); } } } // Triggering after save events. ViewGUITrans.Cache.Persisted(false); }
public void Persist(PersistDelegate baseMethod) { baseMethod(); if (skipPersist == false) { ARRegister doc = Base.ARDocument.Current; ARRegisterExt docExt = PXCache <ARRegister> .GetExtension <ARRegisterExt>(doc); // Check for document and released flag if (doc != null && doc.Released == true && doc.DocType.IsIn(ARDocType.Invoice, ARDocType.CreditMemo, ARDocType.CashSale) && ((string.IsNullOrEmpty(docExt.UsrGUINbr) && docExt.UsrVATOutCode == TWGUIFormatCode.vATOutCode36) || !string.IsNullOrEmpty(docExt.UsrVATOutCode)) ) { if (docExt.UsrVATOutCode.IsIn(TWGUIFormatCode.vATOutCode33, TWGUIFormatCode.vATOutCode34) && docExt.UsrCreditAction == TWNCreditAction.NO) { throw new PXException(TWMessages.CRACIsNone); } else if (docExt.UsrVATOutCode == TWGUIFormatCode.vATOutCode37) { throw new PXException(TWMessages.VATOutCodeIs37); } TaxTran xTran = APReleaseProcess_Extension.SelectTaxTran(Base, doc.DocType, doc.RefNbr, BatchModule.AR); if (xTran == null) { throw new PXException(TWMessages.NoInvTaxDtls); } if (PXCache <Tax> .GetExtension <TaxExt>(Tax.PK.Find(Base, xTran.TaxID)).UsrTWNGUI != true) { return; } decimal?netAmt = xTran.TaxableAmt + xTran.RetainedTaxableAmt; decimal?taxAmt = xTran.TaxAmt + xTran.RetainedTaxAmt; decimal?remainNet = netAmt; decimal?remainTax = taxAmt; decimal?settledNet = 0; decimal?settledTax = 0; using (PXTransactionScope ts = new PXTransactionScope()) { TWNReleaseProcess rp = PXGraph.CreateInstance <TWNReleaseProcess>(); Customer customer = SelectFrom <Customer> .Where <Customer.bAccountID.IsEqual <@P.AsInt> > .View.ReadOnly.Select(Base, doc.CustomerID); string[] gUINbrs = !string.IsNullOrEmpty(docExt.UsrGUINbr) ? docExt.UsrGUINbr.Split(';') : new string[1] { string.Empty }; for (int i = 0; i < gUINbrs.Length; i++) { string gUINbr = gUINbrs[i].TrimStart(); // Avoid standard logic calling this method twice and inserting duplicate records into TWNGUITrans. if (APReleaseProcess_Extension.CountExistedRec(Base, gUINbr, docExt.UsrVATOutCode, doc.RefNbr) > 0) { return; } TWNGUITrans tWNGUITrans = rp.InitAndCheckOnAR(gUINbr, docExt.UsrVATOutCode); string taxCateID = string.Empty; foreach (ARTran row in Base.ARTran_TranType_RefNbr.Cache.Cached) { taxCateID = row.TaxCategoryID; goto CreatGUI; } CreatGUI: if (docExt.UsrCreditAction.IsIn(TWNCreditAction.CN, TWNCreditAction.NO)) { //TWNGUIPreferences gUIPreferences = SelectFrom<TWNGUIPreferences>.View.Select(Base); //string numberingSeq = (docExt.UsrVATOutCode == TWGUIFormatCode.vATOutCode32) ? gUIPreferences.GUI2CopiesNumbering : gUIPreferences.GUI3CopiesNumbering; //docExt.UsrGUINbr = ARGUINbrAutoNumAttribute.GetNextNumber(Base.ARDocument.Cache, doc, numberingSeq, doc.DocDate); FSAppointment appointment = SelectFrom <FSAppointment> .LeftJoin <FSPostDoc> .On <FSPostDoc.appointmentID.IsEqual <FSAppointment.appointmentID> > .Where <FSPostDoc.postDocType.IsEqual <@P.AsString> .And <FSPostDoc.postRefNbr.IsEqual <@P.AsString> > > .View.ReadOnly.Select(Base, doc.DocType, doc.RefNbr); if (tWNGUITrans != null) { settledNet = (tWNGUITrans.NetAmtRemain < remainNet) ? tWNGUITrans.NetAmtRemain : remainNet; settledTax = (tWNGUITrans.TaxAmtRemain < remainTax) ? tWNGUITrans.TaxAmtRemain : remainTax; remainNet -= settledNet; remainTax -= settledTax; } else { settledNet = remainNet; settledTax = remainTax; } rp.CreateGUITrans(new STWNGUITran() { VATCode = docExt.UsrVATOutCode, GUINbr = gUINbr ?? string.Empty, GUIStatus = doc.CuryOrigDocAmt == 0m ? TWNGUIStatus.Voided : TWNGUIStatus.Used, BranchID = doc.BranchID, GUIDirection = TWNGUIDirection.Issue, GUIDate = docExt.UsrGUIDate.Value.Date.Add(doc.CreatedDateTime.Value.TimeOfDay), GUITitle = customer.AcctName, TaxZoneID = Base.ARInvoice_DocType_RefNbr.Current.TaxZoneID, TaxCategoryID = taxCateID, TaxID = xTran.TaxID, TaxNbr = docExt.UsrTaxNbr, OurTaxNbr = docExt.UsrOurTaxNbr, NetAmount = settledNet < 0 ? 0 : settledNet, TaxAmount = settledTax < 0 ? 0 : settledTax, AcctCD = customer.AcctCD, AcctName = customer.AcctName, Remark = (appointment is null) ? string.Empty : appointment.RefNbr, BatchNbr = doc.BatchNbr, OrderNbr = doc.RefNbr, CarrierType = GetCarrierType(docExt.UsrCarrierID), CarrierID = docExt.UsrB2CType == TWNB2CType.MC ? GetCarrierID(docExt.UsrTaxNbr, docExt.UsrCarrierID) : null, NPONbr = docExt.UsrB2CType == TWNB2CType.NPO ? GetNPOBAN(docExt.UsrTaxNbr, docExt.UsrNPONbr) : null, B2CPrinted = (docExt.UsrB2CType == TWNB2CType.DEF && string.IsNullOrEmpty(docExt.UsrTaxNbr)) ? true : false, });