示例#1
0
        protected static void UpdatePrices(ContractMaint graph, ContractDetail item)
        {
            Contract contract = PXSelect <Contract, Where <Contract.contractID, Equal <Required <Contract.contractID> > > > .Select(graph, item.ContractID);

            using (PXTransactionScope ts = new PXTransactionScope())
            {
                if (CTPRType.IsTemplate(contract.BaseType) != true)
                {
                    ContractMaintExt contractMaintExt = CreateInstance <ContractMaintExt>();
                    contractMaintExt.Contracts.Current = contract;
                    if (contract.IsActive == true &&
                        contract.IsPendingUpdate != true &&
                        contract.Status != Contract.status.PendingActivation)
                    {
                        CTBillEngine engine = CreateInstance <CTBillEngine>();
                        engine.Upgrade(contract.ContractID);
                        engine.Clear();
                        contractMaintExt.Contracts.Current = PXSelect <Contract, Where <Contract.contractID, Equal <Required <Contract.contractID> > > > .Select(engine, item.ContractID);

                        item = PXSelect <ContractDetail,
                                         Where <ContractDetail.contractID, Equal <Required <ContractDetail.contractID> >,
                                                And <ContractDetail.lineNbr, Equal <Required <ContractDetail.lineNbr> > > > > .Select(engine, item.ContractID, item.LineNbr);
                    }
                    contractMaintExt.ContractDetails.Cache.SetDefaultExt <ContractDetail.basePriceOption>(item);
                    contractMaintExt.ContractDetails.Cache.SetDefaultExt <ContractDetail.basePrice>(item);
                    contractMaintExt.ContractDetails.Cache.SetDefaultExt <ContractDetail.renewalPriceOption>(item);
                    contractMaintExt.ContractDetails.Cache.SetDefaultExt <ContractDetail.renewalPrice>(item);
                    contractMaintExt.ContractDetails.Cache.SetDefaultExt <ContractDetail.fixedRecurringPriceOption>(item);
                    contractMaintExt.ContractDetails.Cache.SetDefaultExt <ContractDetail.fixedRecurringPrice>(item);
                    contractMaintExt.ContractDetails.Cache.SetDefaultExt <ContractDetail.usagePriceOption>(item);
                    contractMaintExt.ContractDetails.Cache.SetDefaultExt <ContractDetail.usagePrice>(item);
                    contractMaintExt.ContractDetails.Update(item);

                    contractMaintExt.Actions.PressSave();
                }
                else
                {
                    TemplateMaint templateMaint = CreateInstance <TemplateMaint>();
                    templateMaint.Templates.Current = PXSelect <ContractTemplate, Where <ContractTemplate.contractID, Equal <Required <ContractTemplate.contractID> > > > .Select(graph, item.ContractID);

                    templateMaint.ContractDetails.Cache.SetDefaultExt <ContractDetail.basePriceOption>(item);
                    templateMaint.ContractDetails.Cache.SetDefaultExt <ContractDetail.basePrice>(item);
                    templateMaint.ContractDetails.Cache.SetDefaultExt <ContractDetail.renewalPriceOption>(item);
                    templateMaint.ContractDetails.Cache.SetDefaultExt <ContractDetail.renewalPrice>(item);
                    templateMaint.ContractDetails.Cache.SetDefaultExt <ContractDetail.fixedRecurringPriceOption>(item);
                    templateMaint.ContractDetails.Cache.SetDefaultExt <ContractDetail.fixedRecurringPrice>(item);
                    templateMaint.ContractDetails.Cache.SetDefaultExt <ContractDetail.usagePriceOption>(item);
                    templateMaint.ContractDetails.Cache.SetDefaultExt <ContractDetail.usagePrice>(item);
                    templateMaint.ContractDetails.Update(item);
                    templateMaint.Actions.PressSave();
                }
                ts.Complete();
            }
        }
示例#2
0
        protected virtual void BillingFilter_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
        {
            BillingFilter filter = (BillingFilter)e.Row;

            Items.SetProcessDelegate(
                delegate(Contract item)
            {
                CTBillEngine engine = PXGraph.CreateInstance <CTBillEngine>();
                ContractBillingSchedule schedule = PXSelect <ContractBillingSchedule, Where <ContractBillingSchedule.contractID, Equal <Required <Contract.contractID> > > > .Select(engine, item.ContractID);
                if (schedule.Type == BillingType.OnDemand)
                {
                    engine.Bill(item.ContractID, filter.InvoiceDate);
                }
                else
                {
                    engine.Bill(item.ContractID);
                }
            });
        }
示例#3
0
        public void Persist(PersistDelegate baseMethod)
        {
            ARRegister      invoice        = Base.ARDocument.Current;
            List <Contract> setupContracts = new List <Contract>();

            if (SetupContract)
            {
                // Create, set up, and activate contracts
                ContractMaint contractMaint = PXGraph.CreateInstance <ContractMaint>();
                CTBillEngine  engine        = PXGraph.CreateInstance <CTBillEngine>();
                int           seq           = 1;
                // Reuse ARTran_TranType_RefNbr from ARReleaseProcess
                foreach (ARTran tran in

                         PXSelect <ARTran,
                                   Where <ARTran.tranType, Equal <Required <ARInvoice.docType> >,
                                          And <ARTran.refNbr, Equal <Required <ARInvoice.refNbr> >,
                                               And <ARTranExt.usrSIMCardID, IsNotNull,
                                                    And <ARTranExt.usrContractID, IsNull> > > >,
                                   OrderBy <Asc <ARTran.tranType, Asc <ARTran.refNbr,
                                                                       Asc <ARTran.lineNbr> > > > >
                         .Select(Base, invoice.DocType, invoice.RefNbr))
                {
                    // Create, set up, and activate contract for a particular SOInvoice line
                    ARTranExt tranExt = PXCache <ARTran> .GetExtension <ARTranExt>(tran);

                    Contract contract = CreateActivateContract(contractMaint,
                                                               invoice.DocDate, invoice.CustomerID, invoice.CustomerLocationID,
                                                               tranExt.UsrSIMCardID, tranExt.UsrPhoneNumber, engine);
                    setupContracts.Add(contract);
                    // Associate the generated contract with the SOInvoice line
                    tranExt.UsrContractID = contract.ContractID;

                    Base.ARTran_TranType_RefNbr.Cache.SetValueExt(tran, "UsrContractID", contract.ContractID);
                    Base.ARTran_TranType_RefNbr.Cache.SetStatus(tran, PXEntryStatus.Modified);
                    Base.ARTran_TranType_RefNbr.Cache.Update(tran);
                    Base.ARTran_TranType_RefNbr.Cache.IsDirty = true;
                    seq++;
                }
            }
            baseMethod();
        }
示例#4
0
        private Contract CreateActivateContract(ContractMaint contractMaint,
                                                DateTime?invoiceDate, int?customerID, int?customerLocationID,
                                                string simCardID, string phoneNumber, CTBillEngine engine)
        {
            contractMaint.Clear();
            // Initialize new contract
            Contract contract =
                (Contract)contractMaint.Contracts.Cache.CreateInstance();

            contract = contractMaint.Contracts.Insert(contract);
            // Look up contract template ID
            Contract template = PXSelect <Contract,
                                          Where <Contract.isTemplate, Equal <boolTrue>,
                                                 And <Contract.contractCD, Equal <Required <Contract.contractCD> > > > >
                                .Select(Base, "SIMCARD");

            if (template == null)
            {
                throw new
                      PXException("The SIMCARD contract template was not found.");
            }
            // Set required fields
            contract.TemplateID     = template.ContractID;
            contract.CustomerID     = customerID;
            contract                = contractMaint.Contracts.Update(contract);
            contract.LocationID     = customerLocationID;
            contract.StartDate      = invoiceDate;
            contract.ActivationDate = invoiceDate;
            contract                = contractMaint.Contracts.Update(contract);
            // Store simCardID and phoneNumber into the contract attributes
            foreach (CSAnswers attribute in contractMaint.Answers.Select())
            {
                switch (attribute.AttributeID)
                {
                case "SIMCARDID":
                    attribute.Value = simCardID;
                    contractMaint.Answers.Update(attribute);
                    break;

                case "PHONENUM":
                    attribute.Value = phoneNumber;
                    contractMaint.Answers.Update(attribute);
                    break;
                }
            }
            // Save the generated contract
            contractMaint.Save.Press();
            // Set up and activate the contract
            engine.SetupAndActivate(contract.ContractID, contract.ActivationDate);
            return(contract);
        }