public static IEnumerable <ExternalTransaction> GetSOInvoiceExternalTrans(PXGraph graph, ARInvoice currentInvoice) { foreach (ExternalTransaction tran in PXSelectReadonly <ExternalTransaction, Where <ExternalTransaction.refNbr, Equal <Current <ARInvoice.refNbr> >, And <ExternalTransaction.docType, Equal <Current <ARInvoice.docType> > > >, OrderBy <Desc <ExternalTransaction.transactionID> > > .SelectMultiBound(graph, new object[] { currentInvoice })) { yield return(tran); } foreach (ExternalTransaction tran in PXSelectReadonly2 <ExternalTransaction, InnerJoin <SOOrderShipment, On <SOOrderShipment.orderNbr, Equal <ExternalTransaction.origRefNbr>, And <SOOrderShipment.orderType, Equal <ExternalTransaction.origDocType> > > >, Where <SOOrderShipment.invoiceNbr, Equal <Current <ARInvoice.refNbr> >, And <SOOrderShipment.invoiceType, Equal <Current <ARInvoice.docType> >, And <ExternalTransaction.refNbr, IsNull> > >, OrderBy <Desc <CCProcTran.tranNbr> > > .SelectMultiBound(graph, new object[] { currentInvoice })) { yield return(tran); } }
protected List <object> SelectTaxes <TWhere, TLineNbr>(PXGraph graph, object[] currents, PXTaxCheck taxchk, params object[] parameters) where TWhere : IBqlWhere, new() where TLineNbr : IBqlOperand { Dictionary <string, PXResult <Tax, TaxRev> > tail = new Dictionary <string, PXResult <Tax, TaxRev> >(); foreach (PXResult <Tax, TaxRev> record in PXSelectReadonly2 <Tax, LeftJoin <TaxRev, On <TaxRev.taxID, Equal <Tax.taxID>, And <TaxRev.outdated, Equal <boolFalse>, And2 <Where <TaxRev.taxType, Equal <TaxType.purchase>, And <Tax.reverseTax, Equal <boolFalse>, Or <TaxRev.taxType, Equal <TaxType.sales>, And <Where <Tax.reverseTax, Equal <boolTrue>, Or <Tax.taxType, Equal <CSTaxType.use>, Or <Tax.taxType, Equal <CSTaxType.withholding> > > > > > > >, And <Current <POLandedCostDoc.docDate>, Between <TaxRev.startDate, TaxRev.endDate> > > > > >, TWhere> .SelectMultiBound(graph, currents, parameters)) { tail[((Tax)record).TaxID] = record; } List <object> ret = new List <object>(); switch (taxchk) { case PXTaxCheck.Line: foreach (POLandedCostTax record in PXSelect <POLandedCostTax, Where <POLandedCostTax.docType, Equal <Current <POLandedCostDoc.docType> >, And <POLandedCostTax.refNbr, Equal <Current <POLandedCostDoc.refNbr> >, And <POLandedCostTax.lineNbr, Equal <TLineNbr> > > > > .SelectMultiBound(graph, currents)) { PXResult <Tax, TaxRev> line; if (tail.TryGetValue(record.TaxID, out line)) { int idx; for (idx = ret.Count; (idx > 0) && String.Compare(((Tax)(PXResult <POLandedCostTax, Tax, TaxRev>)ret[idx - 1]).TaxCalcLevel, ((Tax)line).TaxCalcLevel) > 0; idx--) { ; } ret.Insert(idx, new PXResult <POLandedCostTax, Tax, TaxRev>(record, (Tax)line, (TaxRev)line)); } } return(ret); case PXTaxCheck.RecalcLine: foreach (POLandedCostTax record in PXSelect <POLandedCostTax, Where <POLandedCostTax.docType, Equal <Current <POLandedCostDoc.docType> >, And <POLandedCostTax.refNbr, Equal <Current <POLandedCostDoc.refNbr> >, And <POLandedCostTax.lineNbr, Less <intMax> > > > > .SelectMultiBound(graph, currents)) { PXResult <Tax, TaxRev> line; if (tail.TryGetValue(record.TaxID, out line)) { int idx; for (idx = ret.Count; (idx > 0) && ((POLandedCostTax)(PXResult <POLandedCostTax, Tax, TaxRev>)ret[idx - 1]).LineNbr == record.LineNbr && String.Compare(((Tax)(PXResult <POLandedCostTax, Tax, TaxRev>)ret[idx - 1]).TaxCalcLevel, ((Tax)line).TaxCalcLevel) > 0; idx--) { ; } ret.Insert(idx, new PXResult <POLandedCostTax, Tax, TaxRev>(record, (Tax)line, (TaxRev)line)); } } return(ret); case PXTaxCheck.RecalcTotals: foreach (POLandedCostTaxTran record in PXSelect <POLandedCostTaxTran, Where <POLandedCostTaxTran.docType, Equal <Current <POLandedCostDoc.docType> >, And <POLandedCostTaxTran.refNbr, Equal <Current <POLandedCostDoc.refNbr> > > > > .SelectMultiBound(graph, currents)) { PXResult <Tax, TaxRev> line; if (record.TaxID != null && tail.TryGetValue(record.TaxID, out line)) { int idx; for (idx = ret.Count; (idx > 0) && String.Compare(((Tax)(PXResult <POLandedCostTaxTran, Tax, TaxRev>)ret[idx - 1]).TaxCalcLevel, ((Tax)line).TaxCalcLevel) > 0; idx--) { ; } ret.Insert(idx, new PXResult <POLandedCostTaxTran, Tax, TaxRev>(record, (Tax)line, (TaxRev)line)); } } return(ret); default: return(ret); } }
public virtual void IntegrityCheckProc(INItemSiteSummary itemsite, string minPeriod, bool replanBackorders) { using (PXConnectionScope cs = new PXConnectionScope()) { using (PXTransactionScope ts = new PXTransactionScope()) { foreach (INItemPlan p in PXSelectReadonly2 <INItemPlan, LeftJoin <Note, On <Note.noteID, Equal <INItemPlan.refNoteID> > >, Where <INItemPlan.inventoryID, Equal <Current <INItemSiteSummary.inventoryID> >, And <INItemPlan.siteID, Equal <Current <INItemSiteSummary.siteID> >, And <Note.noteID, IsNull> > > > .SelectMultiBound(this, new object[] { itemsite })) { PXDatabase.Delete <INItemPlan>(new PXDataFieldRestrict("PlanID", PXDbType.BigInt, 8, p.PlanID, PXComp.EQ)); } foreach (INItemPlan p in PXSelectReadonly2 <INItemPlan, InnerJoin <INRegister, On <INRegister.noteID, Equal <INItemPlan.refNoteID>, And <INRegister.siteID, Equal <INItemPlan.siteID> > > >, Where <INRegister.docType, Equal <INDocType.transfer>, And <INRegister.released, Equal <boolTrue>, And <INItemPlan.inventoryID, Equal <Current <INItemSiteSummary.inventoryID> >, And <INItemPlan.siteID, Equal <Current <INItemSiteSummary.siteID> > > > > > > .SelectMultiBound(this, new object[] { itemsite })) { PXDatabase.Delete <INItemPlan>(new PXDataFieldRestrict("PlanID", PXDbType.BigInt, 8, p.PlanID, PXComp.EQ)); } foreach (PXResult <INTranSplit, INRegister, INSite, INItemSite> res in PXSelectJoin <INTranSplit, InnerJoin <INRegister, On <INRegister.docType, Equal <INTranSplit.docType>, And <INRegister.refNbr, Equal <INTranSplit.refNbr> > >, InnerJoin <INSite, On <INSite.siteID, Equal <INRegister.toSiteID> >, LeftJoin <INItemSite, On <INItemSite.inventoryID, Equal <INTranSplit.inventoryID>, And <INItemSite.siteID, Equal <INRegister.toSiteID> > >, LeftJoin <INTran, On <INTran.origTranType, Equal <INTranSplit.tranType>, And <INTran.origRefNbr, Equal <INTranSplit.refNbr>, And <INTran.origLineNbr, Equal <INTranSplit.lineNbr> > > >, LeftJoin <INItemPlan, On <INItemPlan.planID, Equal <INTranSplit.planID> > > > > > >, Where <INRegister.docType, Equal <INDocType.transfer>, And2 <Where <INRegister.released, Equal <boolTrue>, And <INTranSplit.released, Equal <boolTrue>, Or <INRegister.released, Equal <boolFalse> > > >, And <INTranSplit.inventoryID, Equal <Current <INItemSiteSummary.inventoryID> >, And <INTranSplit.siteID, Equal <Current <INItemSiteSummary.siteID> >, And <INTranSplit.invtMult, Equal <shortMinus1>, And <INItemPlan.planID, IsNull, And <INTran.refNbr, IsNull> > > > > > > > .SelectMultiBound(this, new object[] { itemsite })) { INTranSplit split = res; INRegister doc = res; if (split.TransferType == INTransferType.OneStep && doc.Released == true) { if (doc.TransferType == INTransferType.OneStep) { doc.TransferType = INTransferType.TwoStep; Caches[typeof(INRegister)].Update(doc); } split.TransferType = INTransferType.TwoStep; } INItemPlan plan = INItemPlanIDAttribute.DefaultValues(this.Caches[typeof(INTranSplit)], res); if (plan.LocationID == null) { plan.LocationID = ((INItemSite)res).DfltReceiptLocationID ?? ((INSite)res).ReceiptLocationID; } plan = (INItemPlan)this.Caches[typeof(INItemPlan)].Insert(plan); split.PlanID = plan.PlanID; Caches[typeof(INTranSplit)].SetStatus(split, PXEntryStatus.Updated); } PXDatabase.Update <INSiteStatus>( new PXDataFieldRestrict <INSiteStatus.inventoryID>(PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ), new PXDataFieldRestrict <INSiteStatus.siteID>(PXDbType.Int, 4, itemsite.SiteID, PXComp.EQ), new PXDataFieldAssign <INSiteStatus.qtyAvail>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtyHardAvail>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtyNotAvail>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtyINIssues>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtyINReceipts>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtyInTransit>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtyINAssemblySupply>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtyINAssemblyDemand>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtyINReplaned>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtyPOPrepared>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtyPOOrders>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtyPOReceipts>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtySOPrepared>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtySOBooked>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtySOShipped>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtySOShipping>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtySOBackOrdered>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtySOFixed>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtyPOFixedOrders>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtyPOFixedPrepared>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtyPOFixedReceipts>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtySODropShip>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtyPODropShipOrders>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtyPODropShipPrepared>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtyPODropShipReceipts>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INSiteStatus.qtyInTransitToSO>(PXDbType.Decimal, 0m) ); PXDatabase.Update <INLocationStatus>( new PXDataFieldRestrict <INLocationStatus.inventoryID>(PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ), new PXDataFieldRestrict <INLocationStatus.siteID>(PXDbType.Int, 4, itemsite.SiteID, PXComp.EQ), new PXDataFieldAssign <INLocationStatus.qtyAvail>(PXDbType.DirectExpression, "QtyOnHand"), new PXDataFieldAssign <INLocationStatus.qtyHardAvail>(PXDbType.DirectExpression, "QtyOnHand"), new PXDataFieldAssign <INLocationStatus.qtyINIssues>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLocationStatus.qtyINReceipts>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLocationStatus.qtyInTransit>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLocationStatus.qtyINAssemblySupply>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLocationStatus.qtyINAssemblyDemand>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLocationStatus.qtyPOPrepared>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLocationStatus.qtyPOOrders>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLocationStatus.qtyPOReceipts>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLocationStatus.qtySOPrepared>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLocationStatus.qtySOBooked>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLocationStatus.qtySOShipped>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLocationStatus.qtySOShipping>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLocationStatus.qtySOBackOrdered>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLocationStatus.qtySOFixed>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLocationStatus.qtyPOFixedOrders>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLocationStatus.qtyPOFixedPrepared>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLocationStatus.qtyPOFixedReceipts>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLocationStatus.qtySODropShip>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLocationStatus.qtyPODropShipOrders>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLocationStatus.qtyPODropShipPrepared>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLocationStatus.qtyPODropShipReceipts>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLocationStatus.qtyInTransitToSO>(PXDbType.Decimal, 0m) ); PXDatabase.Update <INLotSerialStatus>( new PXDataFieldRestrict <INLotSerialStatus.inventoryID>(PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ), new PXDataFieldRestrict <INLotSerialStatus.siteID>(PXDbType.Int, 4, itemsite.SiteID, PXComp.EQ), new PXDataFieldAssign <INLotSerialStatus.qtyAvail>(PXDbType.DirectExpression, "QtyOnHand"), new PXDataFieldAssign <INLotSerialStatus.qtyHardAvail>(PXDbType.DirectExpression, "QtyOnHand"), new PXDataFieldAssign <INLotSerialStatus.qtyINIssues>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLotSerialStatus.qtyINReceipts>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLotSerialStatus.qtyInTransit>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLotSerialStatus.qtyINAssemblySupply>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLotSerialStatus.qtyINAssemblyDemand>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLotSerialStatus.qtyPOPrepared>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLotSerialStatus.qtyPOOrders>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLotSerialStatus.qtyPOReceipts>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLotSerialStatus.qtySOPrepared>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLotSerialStatus.qtySOBooked>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLotSerialStatus.qtySOShipped>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLotSerialStatus.qtySOShipping>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLotSerialStatus.qtySOBackOrdered>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLotSerialStatus.qtySOFixed>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLotSerialStatus.qtyPOFixedOrders>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLotSerialStatus.qtyPOFixedPrepared>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLotSerialStatus.qtyPOFixedReceipts>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLotSerialStatus.qtySODropShip>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLotSerialStatus.qtyPODropShipOrders>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLotSerialStatus.qtyPODropShipPrepared>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLotSerialStatus.qtyPODropShipReceipts>(PXDbType.Decimal, 0m), new PXDataFieldAssign <INLotSerialStatus.qtyInTransitToSO>(PXDbType.Decimal, 0m) ); PXDatabase.Update <INItemLotSerial>( new PXDataFieldRestrict("InventoryID", PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ), new PXDataFieldAssign("QtyAvail", PXDbType.DirectExpression, "QtyOnHand"), new PXDataFieldAssign("QtyHardAvail", PXDbType.DirectExpression, "QtyOnHand"), new PXDataFieldAssign("QtyINTransit", PXDbType.Decimal, 0m) ); PXDatabase.Update <INSiteLotSerial>( new PXDataFieldRestrict <INSiteLotSerial.inventoryID>(PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ), new PXDataFieldRestrict <INSiteLotSerial.siteID>(PXDbType.Int, 4, itemsite.SiteID, PXComp.EQ), new PXDataFieldAssign <INSiteLotSerial.qtyAvail>(PXDbType.DirectExpression, "QtyOnHand"), new PXDataFieldAssign <INSiteLotSerial.qtyHardAvail>(PXDbType.DirectExpression, "QtyOnHand"), new PXDataFieldAssign <INSiteLotSerial.qtyInTransit>(PXDbType.Decimal, 0m) ); foreach (PXResult <ReadOnlyLocationStatus, INLocation> res in PXSelectJoinGroupBy <ReadOnlyLocationStatus, InnerJoin <INLocation, On <INLocation.locationID, Equal <ReadOnlyLocationStatus.locationID> > >, Where <ReadOnlyLocationStatus.inventoryID, Equal <Current <INItemSiteSummary.inventoryID> >, And <ReadOnlyLocationStatus.siteID, Equal <Current <INItemSiteSummary.siteID> > > >, Aggregate <GroupBy <ReadOnlyLocationStatus.inventoryID, GroupBy <ReadOnlyLocationStatus.siteID, GroupBy <ReadOnlyLocationStatus.subItemID, GroupBy <INLocation.inclQtyAvail, Sum <ReadOnlyLocationStatus.qtyOnHand> > > > > > > .SelectMultiBound(this, new object[] { itemsite })) { SiteStatus status = new SiteStatus(); status.InventoryID = ((ReadOnlyLocationStatus)res).InventoryID; status.SubItemID = ((ReadOnlyLocationStatus)res).SubItemID; status.SiteID = ((ReadOnlyLocationStatus)res).SiteID; status = (SiteStatus)sitestatus.Cache.Insert(status); if (((INLocation)res).InclQtyAvail == true) { status.QtyAvail += ((ReadOnlyLocationStatus)res).QtyOnHand; status.QtyHardAvail += ((ReadOnlyLocationStatus)res).QtyOnHand; } else { status.QtyNotAvail += ((ReadOnlyLocationStatus)res).QtyOnHand; } } INPlanType plan60 = PXSelect <INPlanType, Where <INPlanType.planType, Equal <INPlanConstants.plan60> > > .Select(this); INPlanType plan61 = PXSelect <INPlanType, Where <INPlanType.planType, Equal <INPlanConstants.plan61> > > .Select(this); INPlanType plan70 = PXSelect <INPlanType, Where <INPlanType.planType, Equal <INPlanConstants.plan70> > > .Select(this); INPlanType plan74 = PXSelect <INPlanType, Where <INPlanType.planType, Equal <INPlanConstants.plan74> > > .Select(this); INPlanType plan76 = PXSelect <INPlanType, Where <INPlanType.planType, Equal <INPlanConstants.plan76> > > .Select(this); INPlanType plan42 = PXSelect <INPlanType, Where <INPlanType.planType, Equal <INPlanConstants.plan42> > > .Select(this); INPlanType plan44 = PXSelect <INPlanType, Where <INPlanType.planType, Equal <INPlanConstants.plan44> > > .Select(this); foreach (PXResult <INItemPlan, INPlanType, SOShipLineSplit, POReceiptLineSplit> res in PXSelectJoin <INItemPlan, InnerJoin <INPlanType, On <INPlanType.planType, Equal <INItemPlan.planType> >, LeftJoin <SOShipLineSplit, On <SOShipLineSplit.planID, Equal <INItemPlan.planID> >, LeftJoin <POReceiptLineSplit, On <POReceiptLineSplit.planID, Equal <INItemPlan.planID> > > > >, Where <INItemPlan.inventoryID, Equal <Current <INItemSiteSummary.inventoryID> >, And <INItemPlan.siteID, Equal <Current <INItemSiteSummary.siteID> > > > > .SelectMultiBound(this, new object[] { itemsite })) { INItemPlan plan = (INItemPlan)res; INPlanType plantype = (INPlanType)res; INPlanType locplantype; SOShipLineSplit sosplit = (SOShipLineSplit)res; POReceiptLineSplit posplit = (POReceiptLineSplit)res; if (plan.InventoryID != null && plan.SubItemID != null && plan.SiteID != null) { switch (plan.PlanType) { case INPlanConstants.Plan61: case INPlanConstants.Plan63: locplantype = plantype; if (sosplit.ShipmentNbr != null) { SOOrderType ordetype = PXSelect <SOOrderType, Where <SOOrderType.orderType, Equal <Current <SOShipLineSplit.origOrderType> > > > .SelectSingleBound(this, new object[] { sosplit }); if (plan.OrigPlanType == null) { plan.OrigPlanType = ordetype.OrderPlanType; } if (plan.OrigPlanType == INPlanConstants.Plan60 && sosplit.IsComponentItem != true) { plantype = plantype - plan60; } if ((plan.OrigPlanType == INPlanConstants.Plan61 || plan.OrigPlanType == INPlanConstants.Plan63) && sosplit.IsComponentItem != true) { plantype = plantype - plan61; } } break; case INPlanConstants.Plan71: case INPlanConstants.Plan72: locplantype = plantype; if (posplit.ReceiptNbr == null) { PXDatabase.Delete <INItemPlan>(new PXDataFieldRestrict("PlanID", PXDbType.BigInt, 8, plan.PlanID, PXComp.EQ)); continue; } if (posplit.PONbr != null) { plantype = plantype - plan70; } break; case INPlanConstants.Plan77: locplantype = plantype; if (posplit.ReceiptNbr != null && posplit.PONbr != null) { plantype = plantype - plan76; } break; case INPlanConstants.Plan75: locplantype = plantype; if (posplit.ReceiptNbr != null && posplit.PONbr != null) { plantype = plantype - plan74; } break; case INPlanConstants.Plan43: case INPlanConstants.Plan45: if (plan.OrigPlanType == INPlanConstants.Plan44) { plantype = plantype - plan44; } if (plan.OrigPlanType == INPlanConstants.Plan42) { plantype = plantype - plan42; } locplantype = plantype; break; default: locplantype = plantype; break; } if (plan.LocationID != null) { LocationStatus item = INItemPlanIDAttribute.UpdateAllocatedQuantitiesBase <LocationStatus>(this, plan, locplantype, true); INItemPlanIDAttribute.UpdateAllocatedQuantitiesBase <SiteStatus>(this, plan, plantype, (bool)item.InclQtyAvail); if (!string.IsNullOrEmpty(plan.LotSerialNbr)) { INItemPlanIDAttribute.UpdateAllocatedQuantitiesBase <LotSerialStatus>(this, plan, locplantype, true); INItemPlanIDAttribute.UpdateAllocatedQuantitiesBase <ItemLotSerial>(this, plan, locplantype, true); INItemPlanIDAttribute.UpdateAllocatedQuantitiesBase <SiteLotSerial>(this, plan, locplantype, true); } } else { INItemPlanIDAttribute.UpdateAllocatedQuantitiesBase <SiteStatus>(this, plan, plantype, true); if (!string.IsNullOrEmpty(plan.LotSerialNbr)) { //TODO: check if LotSerialNbr was allocated on OrigPlanType INItemPlanIDAttribute.UpdateAllocatedQuantitiesBase <ItemLotSerial>(this, plan, plantype, true); INItemPlanIDAttribute.UpdateAllocatedQuantitiesBase <SiteLotSerial>(this, plan, plantype, true); } } } } if (replanBackorders) { INReleaseProcess.ReplanBackOrders(this); initemplan.Cache.Persist(PXDBOperation.Insert); initemplan.Cache.Persist(PXDBOperation.Update); } Caches[typeof(INTranSplit)].Persist(PXDBOperation.Update); sitestatus.Cache.Persist(PXDBOperation.Insert); sitestatus.Cache.Persist(PXDBOperation.Update); locationstatus.Cache.Persist(PXDBOperation.Insert); locationstatus.Cache.Persist(PXDBOperation.Update); lotserialstatus.Cache.Persist(PXDBOperation.Insert); lotserialstatus.Cache.Persist(PXDBOperation.Update); itemlotserial.Cache.Persist(PXDBOperation.Insert); itemlotserial.Cache.Persist(PXDBOperation.Update); sitelotserial.Cache.Persist(PXDBOperation.Insert); sitelotserial.Cache.Persist(PXDBOperation.Update); if (minPeriod != null) { FinPeriod period = PXSelect <FinPeriod, Where <FinPeriod.finPeriodID, Equal <Required <FinPeriod.finPeriodID> > > > .SelectWindowed(this, 0, 1, minPeriod); if (period == null) { return; } DateTime startDate = (DateTime)period.StartDate; PXDatabase.Delete <INItemCostHist>( new PXDataFieldRestrict("InventoryID", PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ), new PXDataFieldRestrict("CostSiteID", PXDbType.Int, 4, itemsite.SiteID, PXComp.EQ), new PXDataFieldRestrict("FinPeriodID", PXDbType.Char, 6, minPeriod, PXComp.GE) ); PXDatabase.Delete <INItemSalesHistD>( new PXDataFieldRestrict("InventoryID", PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ), new PXDataFieldRestrict("SiteID", PXDbType.Int, 4, itemsite.SiteID, PXComp.EQ), new PXDataFieldRestrict("QtyPlanSales", PXDbType.Decimal, 0m), new PXDataFieldRestrict("SDate", PXDbType.DateTime, 8, startDate, PXComp.GE) ); PXDatabase.Delete <INItemCustSalesStats>( new PXDataFieldRestrict("InventoryID", PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ), new PXDataFieldRestrict("SiteID", PXDbType.Int, 4, itemsite.SiteID, PXComp.EQ), new PXDataFieldRestrict("LastDate", PXDbType.DateTime, 8, startDate, PXComp.GE)); PXDatabase.Update <INItemSalesHistD>( new PXDataFieldAssign("QtyIssues", PXDbType.Decimal, 0m), new PXDataFieldAssign("QtyExcluded", PXDbType.Decimal, 0m), new PXDataFieldRestrict("InventoryID", PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ), new PXDataFieldRestrict("SiteID", PXDbType.Int, 4, itemsite.SiteID, PXComp.EQ), new PXDataFieldRestrict("SDate", PXDbType.DateTime, 8, startDate, PXComp.GE) ); foreach (INLocation loc in PXSelectReadonly2 <INLocation, InnerJoin <INItemCostHist, On <INItemCostHist.costSiteID, Equal <INLocation.locationID> > >, Where <INLocation.siteID, Equal <Current <INItemSiteSummary.siteID> >, And <INItemCostHist.inventoryID, Equal <Current <INItemSiteSummary.inventoryID> > > > > .SelectMultiBound(this, new object[] { itemsite })) { PXDatabase.Delete <INItemCostHist>( new PXDataFieldRestrict("InventoryID", PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ), new PXDataFieldRestrict("CostSiteID", PXDbType.Int, 4, loc.LocationID, PXComp.EQ), new PXDataFieldRestrict("FinPeriodID", PXDbType.Char, 6, minPeriod, PXComp.GE) ); } PXDatabase.Delete <INItemSiteHist>( new PXDataFieldRestrict("InventoryID", PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ), new PXDataFieldRestrict("SiteID", PXDbType.Int, 4, itemsite.SiteID, PXComp.EQ), new PXDataFieldRestrict("FinPeriodID", PXDbType.Char, 6, minPeriod, PXComp.GE) ); PXDatabase.Delete <INItemSiteHistD>( new PXDataFieldRestrict("InventoryID", PXDbType.Int, 4, itemsite.InventoryID, PXComp.EQ), new PXDataFieldRestrict("SiteID", PXDbType.Int, 4, itemsite.SiteID, PXComp.EQ), new PXDataFieldRestrict("SDate", PXDbType.DateTime, 8, startDate, PXComp.GE) ); INTran prev_tran = null; foreach (PXResult <INTran, INTranSplit> res in PXSelectReadonly2 <INTran, InnerJoin <INTranSplit, On <INTranSplit.tranType, Equal <INTran.tranType>, And <INTranSplit.refNbr, Equal <INTran.refNbr>, And <INTranSplit.lineNbr, Equal <INTran.lineNbr> > > > >, Where <INTran.inventoryID, Equal <Current <INItemSiteSummary.inventoryID> >, And <INTran.siteID, Equal <Current <INItemSiteSummary.siteID> >, And <INTran.finPeriodID, GreaterEqual <Required <INTran.finPeriodID> >, And <INTran.released, Equal <boolTrue> > > > >, OrderBy <Asc <INTran.tranType, Asc <INTran.refNbr, Asc <INTran.lineNbr> > > > > .SelectMultiBound(this, new object[] { itemsite }, minPeriod)) { INTran tran = res; INTranSplit split = res; if (!Caches[typeof(INTran)].ObjectsEqual(prev_tran, tran)) { INReleaseProcess.UpdateSalesHistD(this, tran); INReleaseProcess.UpdateCustSalesStats(this, tran); prev_tran = tran; } if (split.BaseQty != 0m) { INReleaseProcess.UpdateSiteHist(this, res, split); INReleaseProcess.UpdateSiteHistD(this, split); } } foreach (PXResult <INTran, INTranCost> res in PXSelectReadonly2 <INTran, InnerJoin <INTranCost, On <INTranCost.tranType, Equal <INTran.tranType>, And <INTranCost.refNbr, Equal <INTran.refNbr>, And <INTranCost.lineNbr, Equal <INTran.lineNbr> > > > >, Where <INTran.inventoryID, Equal <Current <INItemSiteSummary.inventoryID> >, And <INTran.siteID, Equal <Current <INItemSiteSummary.siteID> >, And <INTranCost.finPeriodID, GreaterEqual <Required <INTran.finPeriodID> >, And <INTran.released, Equal <boolTrue> > > > > > .SelectMultiBound(this, new object[] { itemsite }, minPeriod)) { INReleaseProcess.UpdateCostHist(this, (INTranCost)res, (INTran)res); } itemcosthist.Cache.Persist(PXDBOperation.Insert); itemcosthist.Cache.Persist(PXDBOperation.Update); itemsitehist.Cache.Persist(PXDBOperation.Insert); itemsitehist.Cache.Persist(PXDBOperation.Update); itemsitehistd.Cache.Persist(PXDBOperation.Insert); itemsitehistd.Cache.Persist(PXDBOperation.Update); itemsalehistd.Cache.Persist(PXDBOperation.Insert); itemsalehistd.Cache.Persist(PXDBOperation.Update); itemcustsalesstats.Cache.Persist(PXDBOperation.Insert); itemcustsalesstats.Cache.Persist(PXDBOperation.Update); } ts.Complete(); } sitestatus.Cache.Persisted(false); locationstatus.Cache.Persisted(false); lotserialstatus.Cache.Persisted(false); itemcosthist.Cache.Persisted(false); itemsitehist.Cache.Persisted(false); itemsitehistd.Cache.Persisted(false); } }
protected override List <object> SelectTaxes <Where>(PXGraph graph, object row, PXTaxCheck taxchk, params object[] parameters) { Dictionary <string, PXResult <Tax, TaxRev> > tail = new Dictionary <string, PXResult <Tax, TaxRev> >(); var currents = new[] { row != null && row is Extensions.SalesTax.Detail ? Details.Cache.GetMain((Extensions.SalesTax.Detail)row):null, ((AppointmentEntryBase)graph).AppointmentSelected.Current }; foreach (PXResult <Tax, TaxRev> record in PXSelectReadonly2 <Tax, LeftJoin <TaxRev, On <TaxRev.taxID, Equal <Tax.taxID>, And <TaxRev.outdated, Equal <False>, And <TaxRev.taxType, Equal <TaxType.sales>, And <Tax.taxType, NotEqual <CSTaxType.withholding>, And <Tax.taxType, NotEqual <CSTaxType.use>, And <Tax.reverseTax, Equal <False>, And <Current <FSAppointment.executionDate>, Between <TaxRev.startDate, TaxRev.endDate> > > > > > > > >, Where> .SelectMultiBound(graph, currents, parameters)) { tail[((Tax)record).TaxID] = record; } List <object> ret = new List <object>(); switch (taxchk) { case PXTaxCheck.Line: foreach (FSAppointmentTax record in PXSelect <FSAppointmentTax, Where <FSAppointmentTax.entityID, Equal <Current <FSAppointment.appointmentID> >, And <FSAppointmentTax.lineNbr, Equal <Current <FSAppointmentDetUNION.apptLineNbr> > > > > .SelectMultiBound(graph, currents)) { PXResult <Tax, TaxRev> line; if (tail.TryGetValue(record.TaxID, out line)) { int idx; for (idx = ret.Count; (idx > 0) && String.Compare(((Tax)(PXResult <FSAppointmentTax, Tax, TaxRev>)ret[idx - 1]).TaxCalcLevel, ((Tax)line).TaxCalcLevel) > 0; idx--) { ; } ret.Insert(idx, new PXResult <FSAppointmentTax, Tax, TaxRev>(record, (Tax)line, (TaxRev)line)); } } return(ret); case PXTaxCheck.RecalcLine: foreach (FSAppointmentTax record in PXSelect <FSAppointmentTax, Where <FSAppointmentTax.entityID, Equal <Current <FSAppointment.appointmentID> >, And <FSAppointmentTax.lineNbr, Less <intMax> > > > .SelectMultiBound(graph, currents)) { PXResult <Tax, TaxRev> line; if (tail.TryGetValue(record.TaxID, out line)) { int idx; for (idx = ret.Count; (idx > 0) && ((FSAppointmentTax)(PXResult <FSAppointmentTax, Tax, TaxRev>)ret[idx - 1]).LineNbr == record.LineNbr && String.Compare(((Tax)(PXResult <FSAppointmentTax, Tax, TaxRev>)ret[idx - 1]).TaxCalcLevel, ((Tax)line).TaxCalcLevel) > 0; idx--) { ; } ret.Insert(idx, new PXResult <FSAppointmentTax, Tax, TaxRev>(record, (Tax)line, (TaxRev)line)); } } return(ret); case PXTaxCheck.RecalcTotals: foreach (FSAppointmentTaxTran record in PXSelect <FSAppointmentTaxTran, Where <FSAppointmentTaxTran.entityID, Equal <Current <FSAppointment.appointmentID> > >, OrderBy <Asc <FSAppointmentTaxTran.entityID, Asc <FSAppointmentTaxTran.lineNbr, Asc <FSAppointmentTaxTran.taxID> > > > > .SelectMultiBound(graph, currents)) { PXResult <Tax, TaxRev> line; if (record.TaxID != null && tail.TryGetValue(record.TaxID, out line)) { int idx; for (idx = ret.Count; (idx > 0) && String.Compare(((Tax)(PXResult <FSAppointmentTaxTran, Tax, TaxRev>)ret[idx - 1]).TaxCalcLevel, ((Tax)line).TaxCalcLevel) > 0; idx--) { ; } ret.Insert(idx, new PXResult <FSAppointmentTaxTran, Tax, TaxRev>(record, (Tax)line, (TaxRev)line)); } } return(ret); default: return(ret); } }
protected override List <object> SelectTaxes <Where>(PXGraph graph, object row, PXTaxCheck taxchk, params object[] parameters) { Dictionary <string, PXResult <Tax, TaxRev> > tail = new Dictionary <string, PXResult <Tax, TaxRev> >(); object[] currents = new object[] { row }; foreach (PXResult <Tax, TaxRev> record in PXSelectReadonly2 <Tax, LeftJoin <TaxRev, On <TaxRev.taxID, Equal <Tax.taxID>, And <TaxRev.outdated, Equal <boolFalse>, And2 <Where <TaxRev.taxType, Equal <TaxType.purchase>, And <Tax.reverseTax, Equal <boolFalse>, Or <TaxRev.taxType, Equal <TaxType.sales>, And <Tax.reverseTax, Equal <boolTrue>, Or <Tax.taxType, Equal <CSTaxType.use>, Or <Tax.taxType, Equal <CSTaxType.withholding> > > > > > >, And <Current <EPExpenseClaimDetails.expenseDate>, Between <TaxRev.startDate, TaxRev.endDate> > > > > >, Where> .SelectMultiBound(graph, currents, parameters)) { Tax adjdTax = AdjustTaxLevel(graph, (Tax)record); tail[((Tax)record).TaxID] = new PXResult <Tax, TaxRev>(adjdTax, (TaxRev)record); } List <object> ret = new List <object>(); switch (taxchk) { case PXTaxCheck.Line: case PXTaxCheck.RecalcLine: var cmdEPTax = new PXSelect <EPTax, Where <EPTax.claimDetailID, Equal <Current <EPExpenseClaimDetails.claimDetailID> > > >(graph); if (IsTaxTipAttribute()) { cmdEPTax.WhereAnd <Where <EPTax.isTipTax, Equal <True> > >(); } else { cmdEPTax.WhereAnd <Where <EPTax.isTipTax, Equal <False> > >(); } foreach (EPTax record in cmdEPTax.Select(currents)) { PXResult <Tax, TaxRev> line; if (tail.TryGetValue(record.TaxID, out line)) { int idx; for (idx = ret.Count; (idx > 0) && String.Compare(((Tax)(PXResult <EPTax, Tax, TaxRev>)ret[idx - 1]).TaxCalcLevel, ((Tax)line).TaxCalcLevel) > 0; idx--) { ; } ret.Insert(idx, new PXResult <EPTax, Tax, TaxRev>(record, (Tax)line, (TaxRev)line)); } } break; case PXTaxCheck.RecalcTotals: var cmdEPTaxTran = new PXSelect <EPTaxTran, Where <EPTaxTran.claimDetailID, Equal <Current <EPExpenseClaimDetails.claimDetailID> > > >(graph); if (IsTaxTipAttribute()) { cmdEPTaxTran.WhereAnd <Where <EPTaxTran.isTipTax, Equal <True> > >(); } else { cmdEPTaxTran.WhereAnd <Where <EPTaxTran.isTipTax, Equal <False> > >(); } foreach (EPTaxTran record in cmdEPTaxTran.Select(currents)) { PXResult <Tax, TaxRev> line; if (tail.TryGetValue(record.TaxID, out line)) { int idx; for (idx = ret.Count; (idx > 0) && String.Compare(((Tax)(PXResult <EPTaxTran, Tax, TaxRev>)ret[idx - 1]).TaxCalcLevel, ((Tax)line).TaxCalcLevel) > 0; idx--) { ; } ret.Insert(idx, new PXResult <EPTaxTran, Tax, TaxRev>(record, (Tax)line, (TaxRev)line)); } } break; } return(ret); }
protected override List <object> SelectTaxes <Where>(PXGraph graph, object row, PXTaxCheck taxchk, params object[] parameters) { Dictionary <string, PXResult <Tax, TaxRev> > tail = new Dictionary <string, PXResult <Tax, TaxRev> >(); object[] currents = new object[] { row, ((CATranEntry)graph).CAAdjRecords.Current }; foreach (PXResult <Tax, TaxRev> record in PXSelectReadonly2 <Tax, LeftJoin <TaxRev, On <TaxRev.taxID, Equal <Tax.taxID>, And <TaxRev.outdated, Equal <boolFalse>, And2 < Where <Current <CAAdj.drCr>, Equal <CADrCr.cACredit>, And <TaxRev.taxType, Equal <TaxType.purchase>, And <Tax.reverseTax, Equal <boolFalse>, Or <Current <CAAdj.drCr>, Equal <CADrCr.cACredit>, And <TaxRev.taxType, Equal <TaxType.sales>, And2 <Where <Tax.reverseTax, Equal <boolTrue>, Or <Tax.taxType, Equal <CSTaxType.use> > >, Or <Current <CAAdj.drCr>, Equal <CADrCr.cADebit>, And <TaxRev.taxType, Equal <TaxType.sales>, And <Tax.reverseTax, Equal <boolFalse>, And <Tax.taxType, NotEqual <CSTaxType.withholding>, And <Tax.taxType, NotEqual <CSTaxType.use> > > > > > > > > > > >, And <Current <CAAdj.tranDate>, Between <TaxRev.startDate, TaxRev.endDate> > > > > >, Where> .SelectMultiBound(graph, currents, parameters)) { Tax adjdTax = AdjustTaxLevel(graph, (Tax)record); tail[((Tax)record).TaxID] = new PXResult <Tax, TaxRev>(adjdTax, (TaxRev)record); } List <object> ret = new List <object>(); switch (taxchk) { case PXTaxCheck.Line: foreach (CATax record in PXSelect <CATax, Where <CATax.adjTranType, Equal <Current <CASplit.adjTranType> >, And <CATax.adjRefNbr, Equal <Current <CASplit.adjRefNbr> >, And <CATax.lineNbr, Equal <Current <CASplit.lineNbr> > > > > > .SelectMultiBound(graph, currents)) { PXResult <Tax, TaxRev> line; if (tail.TryGetValue(record.TaxID, out line)) { int idx = CalculateIndex <CATax>(ret, line); ret.Insert(idx, new PXResult <CATax, Tax, TaxRev>(record, (Tax)line, (TaxRev)line)); } } return(ret); case PXTaxCheck.RecalcLine: foreach (CATax record in PXSelect <CATax, Where <CATax.adjTranType, Equal <Current <CAAdj.adjTranType> >, And <CATax.adjRefNbr, Equal <Current <CAAdj.adjRefNbr> > > > > .SelectMultiBound(graph, currents)) { PXResult <Tax, TaxRev> line; if (tail.TryGetValue(record.TaxID, out line)) { int idx = CalculateIndex <CATax>(ret, line); ret.Insert(idx, new PXResult <CATax, Tax, TaxRev>(record, (Tax)line, (TaxRev)line)); } } return(ret); case PXTaxCheck.RecalcTotals: foreach (CATaxTran record in PXSelect <CATaxTran, Where <CATaxTran.module, Equal <BatchModule.moduleCA>, And <CATaxTran.tranType, Equal <Current <CAAdj.adjTranType> >, And <CATaxTran.refNbr, Equal <Current <CAAdj.adjRefNbr> > > > > > .SelectMultiBound(graph, currents)) { PXResult <Tax, TaxRev> line; if (record.TaxID != null && tail.TryGetValue(record.TaxID, out line)) { int idx = CalculateIndex <CATaxTran>(ret, line); ret.Insert(idx, new PXResult <CATaxTran, Tax, TaxRev>(record, (Tax)line, (TaxRev)line)); } } return(ret); default: return(ret); } }