Exemplo n.º 1
0
        public APInvoiceGAFRecordsCreatorTests()
        {
            var recordBuilderByVendorData             = new PurchaseRecordBuilderByVendorData(GAFRepository);
            var recordBuilderByRegister               = new GafRecordBuilderByRegister(GAFRepository);
            var recordBuilderByInvoiceTran            = new PurchaseRecordBuilderByInvoiceTran(GAFRepository, recordBuilderByVendorData, recordBuilderByRegister);
            var recordBuilderByTaxTranFromTaxDocument = new PurchaseRecordBuilderByTaxTranFromTaxDocument(GAFRepository,
                                                                                                          recordBuilderByVendorData, recordBuilderByRegister);

            InvoiceGafRecordsCreator = new APInvoiceGAFRecordsCreator(GAFRepository, recordBuilderByInvoiceTran,
                                                                      recordBuilderByTaxTranFromTaxDocument,
                                                                      new PurchaseRecordBuilderByAPInvoiceTaxTranForTaxCalcedOnDocumentAmt(GAFRepository, recordBuilderByRegister,
                                                                                                                                           recordBuilderByVendorData));

            _apInvoiceAggregateBuilderFactory = GetService <APInvoiceAggregateBuilderFactory>();
        }
        private static void GenerateProc(GAFPeriod gafPeriod)
        {
            var gafGenerationProcess = PXGraph.CreateInstance <GAFGenerationProcess>();

            IGAFRepository gafRepository               = new GAFRepository(gafGenerationProcess);
            var            recordBuilderByVendorData   = new PurchaseRecordBuilderByVendorData(gafRepository);
            var            recordBuilderByCustomerData = new SupplyRecordBuilderByCustomerData(gafRepository);
            var            recordBuilderByRegister     = new GafRecordBuilderByRegister(gafRepository);
            var            recordCountryBuilderForSO   = new SupplyRecordCountryBuilderForSOInvoice(gafRepository);
            var            recordCountryBuilderForAR   = new SupplyRecordCountryBuilderForARInvoice(gafRepository);


            var apInvoiceGAFRecordsCreator = new APInvoiceGAFRecordsCreator(gafRepository,
                                                                            new PurchaseRecordBuilderByInvoiceTran(gafRepository, recordBuilderByVendorData, recordBuilderByRegister),
                                                                            new PurchaseRecordBuilderByTaxTranFromTaxDocument(gafRepository, recordBuilderByVendorData, recordBuilderByRegister),
                                                                            new PurchaseRecordBuilderByAPInvoiceTaxTranForTaxCalcedOnDocumentAmt(gafRepository, recordBuilderByRegister, recordBuilderByVendorData));

            var arInvoiceGAFRecordsCreator = new ARInvoiceGAFRecordsCreator(gafRepository,
                                                                            new SupplyRecordBuilderByARInvoice(gafRepository,
                                                                                                               recordBuilderByRegister,
                                                                                                               recordBuilderByCustomerData,
                                                                                                               recordCountryBuilderForAR),
                                                                            new SupplyRecordBuilderByARInvoiceTaxTranForTaxCalcedOnDocumentAmt(gafRepository,
                                                                                                                                               recordBuilderByRegister,
                                                                                                                                               recordBuilderByCustomerData,
                                                                                                                                               recordCountryBuilderForAR));

            var arInvoiceFromSOGAFRecordsCreator = new ARInvoiceFromSOGAFRecordsCreator(gafRepository,
                                                                                        new SupplyRecordBuilderBySOInvoice(gafRepository,
                                                                                                                           recordBuilderByRegister,
                                                                                                                           recordBuilderByCustomerData,
                                                                                                                           recordCountryBuilderForSO),
                                                                                        new SupplyRecordBuilderBySOInvoiceTaxTranForTaxCalcedOnDocumentAmt(gafRepository,
                                                                                                                                                           recordBuilderByRegister,
                                                                                                                                                           recordBuilderByCustomerData,
                                                                                                                                                           recordCountryBuilderForSO));

            var apPaymentGAFRecordsCreator = new APPaymentGAFRecordsCreator(gafRepository,
                                                                            new PurchaseRecordBuilderByTaxTranOfAPPayment(gafRepository, recordBuilderByVendorData, recordBuilderByRegister));

            var caDocumentPurchaseGAFRecordsCreator = new CADocumentPurchaseGAFRecordsCreator(gafRepository,
                                                                                              new PurchaseRecordBuilderByCADocument(gafRepository, recordBuilderByRegister),
                                                                                              new PurchaseRecordBuilderByCADocumentTaxTranForTaxCalcedOnDocumentAmt(gafRepository, recordBuilderByRegister));

            var caDocumentSupplyGAFRecordsCreator = new CADocumentSupplyGAFRecordsCreator(gafRepository,
                                                                                          new SupplyRecordBuilderByCADocument(gafRepository, recordBuilderByRegister),
                                                                                          new SupplyRecordBuilderByCADocumentTaxTranForTaxCalcedOnDocumentAmt(gafRepository, recordBuilderByRegister));

            var taxAdjustmentGafRecordsCreator = new TaxAdjustmentGAFRecordsCreator(gafRepository,
                                                                                    new GafRecordBuilderByTaxAdjustmentTaxTran(gafRepository));

            var glDocumentGAFRecordsCreator = new GLDocumentGAFRecordsCreator(gafRepository,
                                                                              new GafRecordBuilderByGLTranAndTaxTran(gafRepository));

            var gafCreationHelper = new GAFValidator(gafRepository);

            var gafDataCreator = new GAFDataCreator(gafRepository,
                                                    gafCreationHelper,
                                                    new GLGAFLedgerRecordsCreator(gafRepository),
                                                    apInvoiceGAFRecordsCreator,
                                                    arInvoiceGAFRecordsCreator,
                                                    arInvoiceFromSOGAFRecordsCreator,
                                                    apPaymentGAFRecordsCreator,
                                                    caDocumentPurchaseGAFRecordsCreator,
                                                    caDocumentSupplyGAFRecordsCreator,
                                                    taxAdjustmentGafRecordsCreator,
                                                    glDocumentGAFRecordsCreator,
                                                    new GafRecordWriter(gafRepository));



            var gafPeriodFromDB = gafRepository.FindGAFPeriodByKey(gafPeriod.BranchID, gafPeriod.TaxAgencyID,
                                                                   gafPeriod.TaxPeriodID);

            gafPeriod = gafPeriodFromDB ?? gafGenerationProcess.GAFPeriodView.Insert(gafPeriod);

            var gstAuditFile = gafDataCreator.Create(gafPeriod, gafGenerationProcess.Accessinfo.BusinessDate.Value);

            if (gstAuditFile == null)
            {
                return;
            }

            gafPeriod.GAFMajorVersion     = gstAuditFile.MajorVersion;
            gafPeriod.GAFMinorLastVersion = gstAuditFile.MinorVersion;

            gafGenerationProcess.GAFPeriodView.Update(gafPeriod);

            using (var ts = new PXTransactionScope())
            {
                PX.Objects.Common.Tools.UploadFileHelper.AttachDataAsFile(gstAuditFile.FileName, gstAuditFile.Data, gafPeriod,
                                                                          gafGenerationProcess);

                gafGenerationProcess.Actions.PressSave();

                ts.Complete();
            }
        }