Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 3
0
        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);
                }
            }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
            }
        }