Exemple #1
0
        public static void RenewContract(ContractMaint docgraph, ContractsList item)
        {
            docgraph.Contracts.Current = PXSelect <CT.Contract, Where <CT.Contract.contractID, Equal <Required <CT.Contract.contractID> > > > .Select(docgraph, item.ContractID);

            docgraph.Billing.Current = docgraph.Billing.Select();
            docgraph.RenewContract();
        }
Exemple #2
0
        protected virtual void CRCaseClass_DefaultContractID_FieldVerifying(PXCache sender, PXFieldVerifyingEventArgs e)
        {
            if (e.NewValue == null)
            {
                return;
            }

            Contract contract = PXSelectReadonly <Contract,
                                                  Where <Contract.contractID, Equal <Required <CRCase.contractID> > > > .
                                Select(this, e.NewValue);

            if (contract != null)
            {
                int daysLeft;
                if (ContractMaint.IsExpired(contract, (DateTime)Accessinfo.BusinessDate))
                {
                    e.NewValue = null;
                    throw new PXSetPropertyException(Messages.ContractExpired, PXErrorLevel.Error);
                }
                if (ContractMaint.IsInGracePeriod(contract, (DateTime)Accessinfo.BusinessDate, out daysLeft))
                {
                    e.NewValue = contract.ContractCD;
                    throw new PXSetPropertyException(Messages.ContractInGracePeriod, PXErrorLevel.Warning, daysLeft);
                }
            }
        }
        public static void RenewContract(ContractMaint docgraph, ContractsList item, RenewalContractFilter filter)
        {
            docgraph.Contracts.Current = PXSelect <Contract, Where <Contract.contractID, Equal <Required <Contract.contractID> > > > .Select(docgraph, item.ContractID);

            docgraph.Billing.Current = docgraph.Billing.Select();
            docgraph.RenewContract(filter.RenewalDate.Value);
        }
Exemple #4
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();
            }
        }
Exemple #5
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);
        }
        public virtual IEnumerable ViewContract(PXAdapter adapter)
        {
            if (Contracts.Current != null)
            {
                ContractMaint target = PXGraph.CreateInstance <ContractMaint>();
                target.Clear();
                target.Contracts.Current = Contracts.Current;
                throw new PXRedirectRequiredException(target, true, "ViewContract")
                      {
                          Mode = PXBaseRedirectException.WindowMode.NewWindow
                      };
            }

            return(adapter.Get());
        }
Exemple #7
0
        public virtual IEnumerable ViewContract(PXAdapter adapter)
        {
            if (Items.Current != null)
            {
                ContractMaint target = PXGraph.CreateInstance <ContractMaint>();
                target.Clear();
                target.Contracts.Current = PXSelect <CT.Contract, Where <CT.Contract.contractID, Equal <Current <ContractsList.contractID> > > > .Select(this);

                throw new PXRedirectRequiredException(target, true, "ViewContract")
                      {
                          Mode = PXBaseRedirectException.WindowMode.NewWindow
                      };
            }

            return(adapter.Get());
        }
Exemple #8
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();
        }
Exemple #9
0
        public virtual IEnumerable viewContract(PXAdapter adapter)
        {
            ContractDetail contractDetail = Items.Current;

            if (contractDetail != null)
            {
                PXGraph graph   = null;
                string  message = null;

                Contract contract = ContractMaint.FindContract(this, contractDetail.ContractID);

                if (CTPRType.IsTemplate(contract.BaseType) == true)
                {
                    TemplateMaint templateMaint = PXGraph.CreateInstance <TemplateMaint>();
                    templateMaint.Templates.Current = templateMaint.Templates.Search <ContractTemplate.contractID>(contractDetail.ContractID);

                    graph   = templateMaint;
                    message = CT.Messages.ViewContractTemplate;
                }
                else
                {
                    ContractMaint contractMaint = PXGraph.CreateInstance <ContractMaint>();
                    contractMaint.Contracts.Current = contract;

                    graph   = contractMaint;
                    message = CT.Messages.ViewContract;
                }

                throw new PXRedirectRequiredException(graph, true, message)
                      {
                          Mode = PXBaseRedirectException.WindowMode.NewWindow
                      };
            }

            return(Filter.Select());
        }
Exemple #10
0
        protected virtual void UsageFilter_ContractID_FieldVerifying(PXCache sender, PXFieldVerifyingEventArgs e)
        {
            if (e.NewValue != null)
            {
                Contract contract = PXSelectReadonly <Contract,
                                                      Where <Contract.contractID, Equal <Required <CRCase.contractID> > > > .Select(this, e.NewValue);

                if (contract != null)
                {
                    #region Set Warnings for expired and 'In Grace Period' contracts

                    int daysLeft;
                    if (ContractMaint.IsExpired(contract, Accessinfo.BusinessDate.Value))
                    {
                        sender.RaiseExceptionHandling <UsageFilter.contractID>(e.Row, contract.ContractCD, new PXSetPropertyException(CR.Messages.ContractExpired, PXErrorLevel.Warning));
                    }
                    else if (ContractMaint.IsInGracePeriod(contract, Accessinfo.BusinessDate.Value, out daysLeft))
                    {
                        sender.RaiseExceptionHandling <UsageFilter.contractID>(e.Row, contract.ContractCD, new PXSetPropertyException(CR.Messages.ContractInGracePeriod, PXErrorLevel.Warning, daysLeft));
                    }
                    #endregion
                }
            }
        }