Exemplo n.º 1
0
        public void WriteCustInvAccount(Prism810Context context, CustomerInvoiceConfigModel configModel, Type810Header header)
        {
            if (!context.IsCustomerInvoice)
            {
                return;
            }

            var partnerId = context.TradingPartnerId;
            var stateId   = partnerId.Substring(3, 2);

            var invoiceNbr = header.InvoiceNbr;

            if (configModel.UseAccNumberForInvoice)
            {
                invoiceNbr = header.EsiId;
            }

            var arSummary = clientDataAccess.LoadArSummaryByInvoice(header.InvoiceNbr);

            if (arSummary == null)
            {
                logger.ErrorFormat("Could not load Customer AR Summary from Invoice {0}", header.InvoiceNbr);
                return;
            }

            var previousBalance = arSummary.PrevBal;
            var currentBalance  = arSummary.BalDue;
            var billingBalance  = (arSummary.PrevBal - arSummary.CurrPmts + arSummary.CurrAdjs);

            var billActionCode = "BD";
            var ldcName        = header.TdspName;

            if (header.CustomerDUNS.Equals("007928344"))
            {
                billActionCode = "PR";
            }

            if (header.CustomerDUNS.Equals("055458350"))
            {
                billActionCode = "ME";
                ldcName        = "NISC";
            }

            if (header.CustomerDUNS.Equals("PROKARMAI", StringComparison.Ordinal))
            {
                billActionCode = "ME";
                ldcName        = "PROKARMA";
            }

            var line =
                string.Format(
                    "01|{0}|{1}|{2}|{3}|{4}||||||||{5}|{6}|||||{7}|{8}|{9}|{10}|||||{11}|{12}|{13}|{14}|||||||||||||||||||||||||||00||||",
                    context.TradingPartnerId, stateId, header.TransactionDate, invoiceNbr, billActionCode,
                    header.CrAccountNumber, header.EsiId, ldcName, header.CustomerDUNS, context.BillFromName,
                    context.BillFromDuns, header.PaymentDueDate, previousBalance, billingBalance, currentBalance);

            context.AppendLine(line);
            logger.TraceFormat("Wrote 810 \"01\" PRISM line for Header {0}", header.HeaderKey);
        }