Пример #1
0
        public void Test_CreateGAFRecordsForDocumentGroup_For_Two_Documents_With_Two_Taxes()
        {
            //Arrange
            var taxAgencyID = _vendorDataContext.TaxAgency.BAccountID;
            var taxPeriodID = _taxPeriodDataContext.TaxPeriod.TaxPeriodID;

            var apRegisterAggregateBuilder = new APRegisterAggregateBuilder();

            var paymentAggr1 = apRegisterAggregateBuilder.CreateDocument(APDocType.Check,
                                                                         "CHECK1",
                                                                         DocumentDataContext.DocDate,
                                                                         DocumentDataContext.CuryIDEUR)
                               .DocumentWith(vendorID: _vendorDataContext.Vendor.BAccountID,
                                             vendorLocationID: _locationDataContext.VendorLocation.LocationID)
                               .AddTaxTran(new TaxTran()
            {
                TaxID          = TaxDataContext.WithholdingTax.TaxID,
                TaxableAmt     = 10,
                TaxAmt         = 1,
                CuryTaxableAmt = 20,
                CuryTaxAmt     = 3,
                AdjdDocType    = APDocType.Invoice,
                AdjdRefNbr     = DocumentDataContext.RefNbr
            })
                               .AddTaxTran(new TaxTran()
            {
                TaxID          = TaxDataContext.WithholdingTax2.TaxID,
                TaxableAmt     = 15,
                TaxAmt         = 2,
                CuryTaxableAmt = 25,
                CuryTaxAmt     = 5,
                AdjdDocType    = APDocType.Invoice,
                AdjdRefNbr     = DocumentDataContext.RefNbr
            })
                               .Build();

            var adjdDocument = new APRegister()
            {
                DocType = APDocType.Invoice,
                RefNbr  = DocumentDataContext.RefNbr,
                DocDesc = "bill 1 desc"
            };

            var paymentAggr2 = apRegisterAggregateBuilder.CreateDocument(APDocType.Check,
                                                                         "CHECK2",
                                                                         DocumentDataContext.DocDate2,
                                                                         DocumentDataContext.CuryIDGBP)
                               .DocumentWith(vendorID: _vendorDataContext.Vendor2.BAccountID,
                                             vendorLocationID: _locationDataContext.Vendor2Location.LocationID)
                               .AddTaxTran(new TaxTran()
            {
                TaxID          = TaxDataContext.WithholdingTax.TaxID,
                TaxableAmt     = 11,
                TaxAmt         = 1.1m,
                CuryTaxableAmt = 21,
                CuryTaxAmt     = 3.1m,
                AdjdDocType    = APDocType.Invoice,
                AdjdRefNbr     = DocumentDataContext.RefNbr2
            })
                               .AddTaxTran(new TaxTran()
            {
                TaxID          = TaxDataContext.WithholdingTax2.TaxID,
                TaxableAmt     = 16,
                TaxAmt         = 2.1m,
                CuryTaxableAmt = 26,
                CuryTaxAmt     = 5.1m,
                AdjdDocType    = APDocType.Invoice,
                AdjdRefNbr     = DocumentDataContext.RefNbr2
            })
                               .Build();

            var adjdDocument2 = new APRegister()
            {
                DocType = APDocType.Invoice,
                RefNbr  = DocumentDataContext.RefNbr2,
                DocDesc = "bill 2 desc"
            };

            var paymentAggregs = new[] { paymentAggr1, paymentAggr2 };
            var adjdRegisters  = new[] { adjdDocument, adjdDocument2 };

            SetupRepositoryMethods(paymentAggregs, adjdRegisters, paymentAggr1.Document.OrigModule, paymentAggr1.Document.DocType, taxAgencyID, taxPeriodID);

            var documentGroup = new DocumentGroup <AP.APRegister>()
            {
                Module            = paymentAggr1.Document.OrigModule,
                DocumentType      = paymentAggr1.Document.DocType,
                DocumentsByRefNbr = paymentAggregs.ToDictionary(aggr => aggr.Document.RefNbr, aggr => aggr.Document)
            };

            //Action
            var purchaseRecords = ApPaymentGAFRecordsCreator.CreateGAFRecordsForDocumentGroup(documentGroup, taxAgencyID, taxPeriodID);

            //Assert
            Approvals.VerifyAll(purchaseRecords, "purchaseRecords", record => record.Dump());
        }