Пример #1
0
 public MainViewModel()
 {
     _categoryProvier         = new DataProvider <Category>(_categoryFilename);
     _participantProvier      = new DataProvider <Participant>(_participantsFilename);
     _transactionDataProvider = new TransactionDataProvider();
     Transactions             = new ObservableCollection <Transaction>();
 }
        public virtual decimal?GetVendorPreparedBalance(APAdjust adjustment)
        {
            FinDocumentExtKey actualDocLineKey = InvoiceDataProvider.GetSourceEntityKeyByRetainage(Graph,
                                                                                                   adjustment.AdjdDocType, adjustment.AdjdRefNbr, adjustment.AdjdLineNbr);

            decimal?fullAmount;

            if (adjustment.AdjdLineNbr == 0)
            {
                APInvoice bill = InvoiceDataProvider.GetInvoice(Graph, actualDocLineKey.Type, actualDocLineKey.RefNbr);

                fullAmount = bill.CuryOrigDocAmt + bill.CuryRetainageTotal;
            }
            else
            {
                APTran tran = TransactionDataProvider.GetTransaction(Graph, actualDocLineKey.Type, actualDocLineKey.RefNbr, actualDocLineKey.LineNbr);

                fullAmount = tran.CuryOrigTranAmt + tran.CuryRetainageAmt;
            }

            var totalJointAmountOwed = JointPayeeDataProvider.GetJointPayees(Graph, actualDocLineKey.RefNbr, actualDocLineKey.LineNbr)
                                       .Sum(jp => jp.JointAmountOwed.GetValueOrDefault());
            var totalVendorPaymentAmount   = GetTotalVendorPaymentAmount(adjustment, actualDocLineKey.RefNbr, actualDocLineKey.LineNbr);
            var currentVendorPaymentAmount = GetVendorPaymentAmount(adjustment);
            var reversedRetainageAmount    = GetReversedRetainageAmount(actualDocLineKey.RefNbr, actualDocLineKey.LineNbr);

            return(fullAmount + reversedRetainageAmount - totalJointAmountOwed
                   - (totalVendorPaymentAmount - currentVendorPaymentAmount));
        }
 public static IEnumerable <int?> GetProjectIds(PXGraph graph, IEnumerable <APAdjust> adjustments)
 {
     return(adjustments.Select(adjustment =>
                               InvoiceDataProvider.GetOriginalInvoice(graph, adjustment.AdjdRefNbr, adjustment.AdjdDocType))
            .SelectMany(inv => TransactionDataProvider
                        .GetTransactions(graph, inv.DocType, inv.RefNbr).Select(t => t.ProjectID)).Distinct().ToList());
 }
Пример #4
0
 private APTran GetTransaction(APAdjust adjustment)
 {
     return(adjustment.AdjdLineNbr == 0
         ? GetTransactionIfAdjustmentIsRelatedToSingleCommitment(adjustment)
         : TransactionDataProvider.GetTransaction(graph, adjustment.AdjdDocType, adjustment.AdjdRefNbr,
                                                  adjustment.AdjdLineNbr));
 }
        private static IEnumerable <APTran> GetTransactions(PXGraph graph, IDocumentAdjustment adjustment)
        {
            var originalBill =
                InvoiceDataProvider.GetOriginalInvoice(graph, adjustment.AdjdRefNbr, adjustment.AdjdDocType);

            return(TransactionDataProvider.GetTransactions(graph, originalBill.DocType, originalBill.RefNbr));
        }
Пример #6
0
        public override decimal?GetInvoiceBalance(APAdjust adjustment)
        {
            var transaction = TransactionDataProvider.GetTransaction(Graph, adjustment.AdjdDocType,
                                                                     adjustment.AdjdRefNbr, adjustment.AdjdLineNbr);

            return(transaction.CuryTranAmt);
        }
        private static APTran GetTransaction(PXGraph graph, JointPayee jointPayee, IDocumentAdjustment adjustment)
        {
            var originalBill =
                InvoiceDataProvider.GetOriginalInvoice(graph, adjustment.AdjdRefNbr, adjustment.AdjdDocType);

            return(TransactionDataProvider.GetTransaction(graph, originalBill.DocType, originalBill.RefNbr,
                                                          jointPayee.BillLineNumber));
        }
Пример #8
0
        protected override decimal GetAllowableCashDiscountConsiderBillBalance(APAdjust apAdjust)
        {
            var billLineBalance = TransactionDataProvider
                                  .GetTransaction(Graph, apAdjust.AdjdDocType, apAdjust.AdjdRefNbr, apAdjust.AdjdLineNbr).CuryTranBal;
            var cashDiscount = billLineBalance - apAdjust.CuryAdjgPPDAmt;

            return(Math.Max(cashDiscount.GetValueOrDefault(), 0));
        }
Пример #9
0
        private bool IsRelatedToCommitment(APTran transaction, int?projectId, string commitmentNumber)
        {
            var originalTransaction = TransactionDataProvider.GetOriginalTransaction(graph, transaction);
            var subcontractNumber   = GetSubcontractNumber(originalTransaction);

            return(originalTransaction.ProjectID == projectId &&
                   commitmentNumber.IsIn(originalTransaction.PONbr, subcontractNumber));
        }
        private int?GetProjectId(JointPayee jointPayee)
        {
            var transaction = jointPayee.BillLineNumber != 0
                ? TransactionDataProvider.GetTransaction(Graph, jointPayee)
                : Transactions.Select(tran => tran).Distinct().SingleOrNull();

            return(TransactionDataProvider.GetOriginalTransaction(Graph, transaction).ProjectID);
        }
Пример #11
0
        private void SetCashDiscountBalance(APAdjust adjustment)
        {
            var invoice = InvoiceDataProvider.GetInvoice(Base, adjustment.AdjdDocType, adjustment.AdjdRefNbr);

            adjustment.CuryDiscBal = invoice.PaymentsByLinesAllowed == true
                ? TransactionDataProvider.GetTransaction(Base, invoice.DocType, invoice.RefNbr, adjustment.AdjdLineNbr)
                                     .CuryCashDiscBal
                : invoice.CuryOrigDiscAmt;
        }
Пример #12
0
        private decimal?GeReleasedAmountFromRetainageGroup(APInvoice invoice, IEnumerable <int?> billLineNumbers)
        {
            var allReleasedBillsFromRetainageGroup = InvoiceDataProvider
                                                     .GetAllBillsFromRetainageGroup(Graph, invoice.RefNbr, invoice.DocType)
                                                     .Except(invoice).Where(bill => bill.Released == true);

            return(allReleasedBillsFromRetainageGroup.SelectMany(bill => TransactionDataProvider
                                                                 .GetTransactions(Graph, bill.DocType, bill.RefNbr, billLineNumbers))
                   .Sum(transaction => transaction.CuryTranBal));
        }
        public static IEnumerable <int?> GetProjectIds(APAdjust adjustment, PXGraph graph)
        {
            FinDocumentExtKey actualDocLineKey = InvoiceDataProvider.GetSourceEntityKeyByRetainage(graph,
                                                                                                   adjustment.AdjdDocType, adjustment.AdjdRefNbr, adjustment.AdjdLineNbr);

            var transactions = adjustment.AdjdLineNbr == 0
                                ? TransactionDataProvider.GetTransactions(graph, actualDocLineKey.Type, actualDocLineKey.RefNbr)
                                : TransactionDataProvider.GetTransaction(graph, actualDocLineKey.Type, actualDocLineKey.RefNbr, actualDocLineKey.LineNbr).SingleToList();

            return(transactions.Select(tran => tran.ProjectID));
        }
Пример #14
0
        public decimal GetVendorBalancePerLine(APAdjust adjustment)
        {
            var jointPayeesTotalBalanceForLine = JointPayees
                                                 .Where(jp => jp.BillLineNumber == adjustment.AdjdLineNbr)
                                                 .Sum(jp => jp.JointBalance);
            var transactionBalance = TransactionDataProvider.GetTransaction(
                Graph, adjustment.AdjdDocType, adjustment.AdjdRefNbr, adjustment.AdjdLineNbr).CuryTranBal;
            var openBalancePerLine   = GetOpenBalanceByAllBillsFromRetainageGroupPerLine(adjustment, transactionBalance);
            var vendorBalancePerLine = openBalancePerLine - jointPayeesTotalBalanceForLine;

            return(Math.Min(transactionBalance.GetValueOrDefault(), vendorBalancePerLine.GetValueOrDefault()));
        }
        protected POOrder GetCommitment(APTran transaction)
        {
            var originalTransaction  = TransactionDataProvider.GetOriginalTransaction(Graph, transaction);
            var transactionExtension = PXCache <APTran> .GetExtension <ApTranExt>(originalTransaction);

            return(transactionExtension.SubcontractNbr != null
                ? CommitmentDataProvider.GetCommitment(Graph, transactionExtension.SubcontractNbr,
                                                       POOrderType.RegularSubcontract)
                : originalTransaction.PONbr != null
                    ? CommitmentDataProvider.GetCommitment(Graph, originalTransaction.PONbr, POOrderType.RegularOrder)
                    : null);
        }
Пример #16
0
        public void TransactionOKTest()
        {
            BvgConnectorMock connector = GetConnector(TransactionDataProvider.GetTransactionOkResponse());

            TransactionBVG response = connector.Transaction(TransactionDataProvider.GetTransaction());

            Assert.AreNotEqual(null, response);

            Assert.AreEqual(false, String.IsNullOrEmpty(response.GetPublicRequestKey()));
            Assert.AreEqual(false, String.IsNullOrEmpty(response.GetMerchantID()));
            Assert.AreEqual(false, String.IsNullOrEmpty(response.GetChannel()));
        }
Пример #17
0
        private LienWaiverGenerationKey GetLienWaiverGroupingKey(APTran transaction, int?jointPayeeVendorId,
                                                                 APRegister payment)
        {
            var originalTransaction = TransactionDataProvider.GetOriginalTransaction(Graph, transaction);

            return(new LienWaiverGenerationKey
            {
                ProjectId = originalTransaction.ProjectID,
                VendorId = payment.VendorID,
                JointPayeeVendorId = jointPayeeVendorId,
                OrderNumber = GetCommitment(originalTransaction).OrderNbr
            });
        }
        public override void RecalculateTotalJointAmount()
        {
            var jointPayeesByLineGroups = JointPayees.SelectMain().GroupBy(jp => jp.BillLineNumber)
                                          .Where(jp => jp.Key != null);

            foreach (var jointPayeesByLine in jointPayeesByLineGroups)
            {
                var transaction = TransactionDataProvider.GetTransaction(Graph, CurrentBill.DocType, CurrentBill.RefNbr,
                                                                         jointPayeesByLine.Key);
                transactionExtension = PXCache <APTran> .GetExtension <ApTranExt>(transaction);

                transactionExtension.TotalJointAmountPerLine = jointPayeesByLine.Sum(jp => jp.JointAmountOwed);
            }
        }
        public override void ValidateAmountOwed(JointPayee jointPayee)
        {
            if (jointPayee.BillLineNumber == null)
            {
                return;
            }
            var transaction = TransactionDataProvider.GetTransaction(Graph, CurrentBill.DocType, CurrentBill.RefNbr,
                                                                     jointPayee.BillLineNumber);

            transactionExtension = PXCache <APTran> .GetExtension <ApTranExt>(transaction);

            ValidateJointAmountOwedPerLine(jointPayee);
            base.ValidateAmountOwed(jointPayee);
        }
Пример #20
0
        private decimal?GetAdjustmentAmountPerLine(APAdjust adjustment)
        {
            var jointPayeePaymentsTotalAmountToPayForLine = InvoiceJointPayeePayments
                                                            .Where(jpp => jpp.BillLineNumber == adjustment.AdjdLineNbr)
                                                            .Sum(jpp => jpp.JointAmountToPay);
            var vendorBalancePerLine = vendorBalancePerLineCalculationService.GetVendorBalancePerLine(adjustment);
            var transactionBalance   = TransactionDataProvider.GetTransaction(
                PaymentEntry, adjustment.AdjdDocType, adjustment.AdjdRefNbr, adjustment.AdjdLineNbr).CuryTranBal;
            var minimumJointAmountToPay = transactionBalance - vendorBalancePerLine;

            return(jointPayeePaymentsTotalAmountToPayForLine > minimumJointAmountToPay
                ? transactionBalance - jointPayeePaymentsTotalAmountToPayForLine
                : vendorBalancePerLine);
        }
        public static IEnumerable <int?> GetProjectIds(APInvoiceEntry graph, JointPayee jointPayee)
        {
            var originalBill = InvoiceDataProvider.GetOriginalInvoice(graph, graph.Document.Current);
            var transactions = TransactionDataProvider.GetTransactions(graph, originalBill.DocType, originalBill.RefNbr)
                               .ToList();

            if (IsSingleProjectPerDocumentContext(graph.APSetup.Current, transactions))
            {
                return(graph.Document.Current.ProjectID.AsSingleEnumerable());
            }
            if (jointPayee != null && graph.Document.Current.PaymentsByLinesAllowed == true)
            {
                transactions = transactions.Where(tran => tran.LineNbr == jointPayee.BillLineNumber).ToList();
            }
            return(transactions.Select(tran => tran.ProjectID).Distinct());
        }
Пример #22
0
        GetOriginalBillTransactionsWithRetainageKey(IDocumentAdjustment adjustment)
        {
            var billTransactions = TransactionDataProvider
                                   .GetTransactions(graph, adjustment.AdjdDocType, adjustment.AdjdRefNbr).ToList();
            var singleTransaction = billTransactions.SingleOrNull();

            if (singleTransaction?.OrigLineNbr != 0)
            {
                return(null, billTransactions);
            }
            var originalInvoice = InvoiceDataProvider
                                  .GetOriginalInvoice(graph, singleTransaction.RefNbr, singleTransaction.TranType);
            var originalTransactions = TransactionDataProvider.GetTransactions(graph, originalInvoice.DocType,
                                                                               originalInvoice.RefNbr).ToList();

            return(singleTransaction, originalTransactions);
        }
Пример #23
0
        static void Main(string[] args)
        {
            try
            {
                // Инициализируем DI и конфигурируем логгер
                var serviceProvider = new ServiceCollection()
                                      .AddLogging(cfg => cfg.AddConsole())
                                      .Configure <LoggerFilterOptions>(cfg => cfg.MinLevel = LogLevel.Information)
                                      .AddTransient <TransactionDataProvider>()
                                      .BuildServiceProvider();

                // Получаем экземпляр логгера и присваиваем
                _logger = serviceProvider.GetService <ILogger <TransactionDataProvider> >();

                // Инициализируем класс провайдера данных
                _dataProvider = serviceProvider.GetRequiredService <TransactionDataProvider>();

                Console.WriteLine(WelcomeStr);

                string userInput;
                do
                {
                    userInput = UserInputData();

                    if (userInput.Equals(_addStr))
                    {
                        Add(userInput);
                    }
                    if (userInput.Equals(_getStr))
                    {
                        Find(userInput);
                    }
                } while (!userInput.Equals(_exitStr));

                if (userInput.Equals(_exitStr))
                {
                    ExitApp();
                }

                Console.ReadLine();
            }
            catch (Exception exc)
            {
                _logger.LogError($"{exc}");
            }
        }
Пример #24
0
        public void TransactionFailValidationTest()
        {
            BvgConnectorMock connector = GetConnector(TransactionDataProvider.GetTransactionOkResponse());

            TransactionBVG response = connector.Transaction(TransactionDataProvider.GetTransactionWrongField());
        }
Пример #25
0
        public void TransactionFailValidationRequiredTest()
        {
            BvgConnectorMock connector = GetConnector(TransactionDataProvider.GetTransactionFailVendedorResponse());

            TransactionBVG response = connector.Transaction(TransactionDataProvider.GetTransactionWithoutField());
        }
Пример #26
0
        public void TransactionFailVendedorTest()
        {
            BvgConnectorMock connector = GetConnector(TransactionDataProvider.GetTransactionFailVendedorResponse());

            TransactionBVG response = connector.Transaction(TransactionDataProvider.GetTransaction());
        }
Пример #27
0
        public void TransactionWithoutFieldTest()
        {
            BvgConnectorMock connector = GetConnector(TransactionDataProvider.GetTransactionFailResponse());

            TransactionBVG response = connector.Transaction(TransactionDataProvider.GetTransaction());
        }
        public static int?GetProjectId(APPaymentEntry graph, APTran transaction)
        {
            var originalTransaction = TransactionDataProvider.GetOriginalTransaction(graph, transaction);

            return(originalTransaction.ProjectID);
        }
Пример #29
0
 protected override decimal?GetCashDiscountBalance(APAdjust adjustment)
 {
     return(TransactionDataProvider
            .GetTransaction(Graph, adjustment.AdjdDocType, adjustment.AdjdRefNbr, adjustment.AdjdLineNbr)
            .CuryCashDiscBal);
 }
Пример #30
0
 private decimal?GetUnreleasedRetainageAmount(APInvoice originalInvoice, IEnumerable <int?> billLineNumbers)
 {
     return(TransactionDataProvider
            .GetTransactions(Graph, originalInvoice.DocType, originalInvoice.RefNbr, billLineNumbers)
            .Sum(t => t.CuryRetainageBal));
 }