コード例 #1
0
ファイル: AgreementService.cs プロジェクト: Ankko0/Auto
        public void CreatePaymentSchedule(EntityReference agreementReference)
        {
            var agreement = service.Retrieve("nav_agreement", agreementReference.Id, new ColumnSet("nav_name", "nav_agreementid", "nav_creditperiod", "nav_fullcreditamount", "nav_paymentplandate")).ToEntity <nav_agreement>();

            if (agreement == null || agreement.nav_name == null || agreement.nav_creditperiod == null || agreement.nav_fullcreditamount == null)
            {
                throw new InvalidPluginExecutionException("Одно из полей не заполенено ! ");
            }

            // Колличество месяцев, если не целое значение, то + 1
            var creditPeriodInMonth = Math.Ceiling((decimal)(agreement.nav_creditperiod * 12));

            var loanFeePerMonth = agreement.nav_fullcreditamount.Value / creditPeriodInMonth;


            for (int i = 0; i < creditPeriodInMonth; i++)
            {
                nav_invoice newInvoice = new nav_invoice();
                newInvoice.nav_invoiceId      = service.Create(newInvoice);
                newInvoice.nav_name           = "Счет на оплату кредита по договору " + agreement.nav_name;
                newInvoice.nav_type           = nav_invoice_nav_type.Avtomaticheskoe_sozdanie;
                newInvoice.nav_date           = DateTime.Now;
                newInvoice.nav_paydate        = DateTime.Now.AddDays(1).AddMonths(i + 1);
                newInvoice.nav_dogovorid      = new EntityReference(nav_agreement.EntityLogicalName, (Guid)agreement.nav_agreementId);
                newInvoice.nav_fact           = false;
                newInvoice.nav_amount         = new Money(loanFeePerMonth);
                agreement.nav_paymentplandate = DateTime.Now.AddDays(1);

                service.Update(agreement);
                service.Update(newInvoice);
            }
        }
コード例 #2
0
ファイル: SetInvoiceTypeCommand.cs プロジェクト: Ankko0/Auto
 public void Execute(nav_invoice invoice)
 {
     if (invoice.nav_type == null)
     {
         invoice.nav_type = nav_invoice_nav_type.Ruchnoe_sozdanie;
     }
 }
コード例 #3
0
        public void Execute(nav_invoice target)
        {
            nav_agreement agreementRecord = new nav_agreement();

            traceService.Trace("Заход в Execute");
            traceService.Trace("target.nav_dogovorid.Id: " + target.nav_dogovorid.Id.ToString());
            agreementRecord = service.Retrieve(nav_agreement.EntityLogicalName,
                                               target.nav_dogovorid.Id,
                                               new Microsoft.Xrm.Sdk.Query.ColumnSet(nav_agreement.Fields.nav_factsumma, nav_agreement.Fields.nav_summa)).ToEntity <nav_agreement>();

            if (agreementRecord.nav_factsumma == null)
            {
                traceService.Trace("agreement.nav_factsumma == null");
                agreementRecord.nav_factsumma = target.nav_amount;
            }
            else
            {
                traceService.Trace("agreement.nav_factsumma != null");
                agreementRecord.nav_factsumma = new Money(agreementRecord.nav_factsumma.Value + target.nav_amount.Value);
            }

            if (agreementRecord.nav_factsumma.Value > agreementRecord.nav_summa.Value)
            {
                traceService.Trace("Сумма данного счета превышает сумму договора. agreement.nav_factsumma.Value > agreement.nav_summa.Value");
                throw new InvalidPluginExecutionException("Сумма данного счета превышает сумму договора.");
            }
            target.nav_paydate = DateTime.Now;
            if (agreementRecord.nav_factsumma.Value == target.nav_amount.Value)
            {
                agreementRecord.nav_fact = true;
            }

            traceService.Trace("Попытка service.Update(agreementRecord)");
            service.Update(agreementRecord);
        }