public static HeaderPt ToHeaderPt(this AuditFile a)
 {
     return(new HeaderPt
     {
         Ficheiro_Auditoria = a.Header.AuditFileVersion,
         Registo_Comercial_Empresa = a.Header.CompanyID,
         NIF_Empresa = a.Header.TaxRegistrationNumber,
         Nome_Empresa = a.Header.CompanyName,
         Designacao_Comercial = a.Header.BusinessName,
         Endereco_Detalhado = a.Header.CompanyAddress.AddressDetail,
         Ano_Fiscal = a.Header.FiscalYear,
         Data_Inicio = a.Header.StartDate,
         Data_Fim = a.Header.EndDate,
         Codigo_Moeda = a.Header.CurrencyCode,
         Data_Criacao = a.Header.DateCreated,
         Identificacao_Estabelecimento = a.Header.TaxEntity,
         NIF_Produtora_Software = a.Header.ProductCompanyTaxID,
         Numero_Certificado = a.Header.SoftwareCertificateNumber,
         Nome_Aplicacao = a.Header.ProductID,
         Versao_Aplicacao = a.Header.ProductVersion,
         //Total_Registos = a?.SourceDocuments?.SalesInvoices != null
         //                                        ? a.SourceDocuments.SalesInvoices.NumberOfEntries.ToAuditInt()
         //                                        : 0,
         //Total_Creditos = a?.SourceDocuments?.SalesInvoices != null
         //                                        ? a.SourceDocuments.SalesInvoices.TotalCredit.ToAuditFloat()
         //                                        : 0,
         //Total_Debitos = a?.SourceDocuments?.SalesInvoices != null
         //                                        ? a.SourceDocuments.SalesInvoices.TotalDebit.ToAuditFloat()
         //                                        : 0,
     });
 }
Exemple #2
0
        public static AuditFile FromXml(this AuditFile auditFile, string xml)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(AuditFile));

            using (TextReader reader = new StringReader(xml))
            {
                auditFile = (AuditFile)serializer.Deserialize(reader);
                return(auditFile);
            }
        }
        private bool ValidateFile(AuditFile b)
        {
            bool r = true;
            var  a = Globals.AttachedFiles.Where(x => x.IsPrincipal == true).FirstOrDefault().AuditFile;

            if (a.Header.CompanyID != b.Header.CompanyID)
            {
                r = false;
            }
            return(r);
        }
        public AuditFile getAduditFile()
        {
            // AuditFileHeader: Completo
            auditFile = new AuditFile()
            {
                Header          = getHeader(),
                MasterFiles     = masterFiles(),
                SourceDocuments = SourceDocuments()
            };

            return(auditFile);
        }
Exemple #5
0
        private void LoadInvoices(AuditFile saft)
        {
            if (saft != null && saft.SourceDocuments != null && saft.SourceDocuments.SalesInvoices != null && saft.SourceDocuments.SalesInvoices.Invoice != null && saft.SourceDocuments.SalesInvoices.Invoice.Length > 0)
            {
                HasDocuments = true;
                allLines     = saft.SourceDocuments.SalesInvoices.Invoice.SelectMany(i => i.Line).ToArray();
                allInvoices  = saft.SourceDocuments.SalesInvoices.Invoice;

                TotalDebit  = saft.SourceDocuments.SalesInvoices.TotalDebit;
                TotalCredit = saft.SourceDocuments.SalesInvoices.TotalCredit;
            }

            AgruparDocumentosDia   = true;
            AgruparLinhasPorCodigo = true;
            InitResumo();
        }
        public static bool salvar(AuditFile auditFile, string pasta, string filename)
        {
            bool sucesso = true;

            try
            {
                auditFile.ToString();
                string fileName = @"\" + filename + ".xml";

                if (!Directory.Exists(pasta))
                {
                    Directory.CreateDirectory(pasta);
                }

                pasta = pasta + fileName;

                XmlSerializer xmlSer = new XmlSerializer(typeof(AuditFile));

                using (StringWriter arquivo = new UTF8StringWriter())
                {
                    xmlSer.Serialize(arquivo, auditFile);

                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.LoadXml(arquivo.ToString());

                    xmlDoc.Save(@pasta);
                }
            }
            catch (Exception ex)
            {
                sucesso = false;
                Console.WriteLine(ex.Message);
            }

            return(sucesso);
        }
 public bool UpdateAuditFile(AuditFile auditFile)
 {
     _db.AuditFiles.Update(auditFile);
     return(Save());
 }
 public bool DeleteAuditFile(AuditFile auditFile)
 {
     _db.AuditFiles.Remove(auditFile);
     return(Save());
 }
 public bool CreateAuditFile(AuditFile auditFile)
 {
     _db.AuditFiles.Add(auditFile);
     return(Save());
 }
Exemple #10
0
        public AuditFile MergeAudits()
        {
            AuditFile audit = OpenFile(Globals.AttachedFiles
                                       .Where(x => x.IsPrincipal == true)
                                       .FirstOrDefault().FilePath);

            foreach (var file in Globals.AttachedFiles.Where(x => x.IsPrincipal == false))
            {
                var subaudit = OpenFile(file.FilePath);

                // merge customers
                audit.MasterFiles.Customer = audit
                                             .MasterFiles
                                             .Customer
                                             .Concat(
                    subaudit.MasterFiles
                    .Customer
                    .Where(p => audit.MasterFiles.Customer.All(p2 => p2.CustomerID != p.CustomerID))
                    )
                                             .ToList();

                // merge taxtables
                audit.MasterFiles.TaxTable.TaxTableEntry = audit
                                                           .MasterFiles
                                                           .TaxTable
                                                           .TaxTableEntry
                                                           .Concat(
                    subaudit.MasterFiles.TaxTable
                    .TaxTableEntry
                    .Where(p => audit.MasterFiles.TaxTable.TaxTableEntry.All(p2 => p2.TaxCode != p.TaxCode &&
                                                                             p2.TaxPercentage != p.TaxPercentage))
                    )
                                                           .ToList();

                // merge products
                audit.MasterFiles.Product = audit
                                            .MasterFiles
                                            .Product
                                            .Concat(
                    subaudit.MasterFiles
                    .Product
                    .Where(p => audit.MasterFiles.Product.All(p2 => p2.ProductCode != p.ProductCode))
                    )
                                            .ToList();

                // merge invoices
                audit.SourceDocuments.SalesInvoices.Invoice = audit
                                                              .SourceDocuments
                                                              .SalesInvoices
                                                              .Invoice
                                                              .Concat(
                    subaudit.SourceDocuments.SalesInvoices
                    .Invoice
                    .Where(p => audit.SourceDocuments.SalesInvoices.Invoice.All(p2 => p2.InvoiceNo != p.InvoiceNo))
                    )
                                                              .ToList();

                // merge accounts
                if (audit.MasterFiles.GeneralLedgerAccounts != null)
                {
                    audit.MasterFiles.GeneralLedgerAccounts.Account = audit
                                                                      .MasterFiles
                                                                      ?.GeneralLedgerAccounts
                                                                      ?.Account
                                                                      .Concat(
                        subaudit.MasterFiles?.GeneralLedgerAccounts
                        .Account
                        .Where(p => audit.MasterFiles.GeneralLedgerAccounts.Account.All(p2 => p2.AccountID != p.AccountID))
                        )
                                                                      .ToList() ?? new List <Account>();
                }
            }

            return(audit);
        }
Exemple #11
0
        public HttpResponseMessage Index()
        {
            using (var Context = new DatabaseContext())
            {
                XDocument  Doc = XDocument.Load(System.Web.HttpContext.Current.Server.MapPath("~/SAFT.xml"));
                XNamespace ns  = Doc.Root.GetDefaultNamespace();

                AuditFile AuditFile = new AuditFile();

                #region Header

                XElement HeaderElement = Doc.Root.Element(ns + "Header");
                AuditFile.CompanyID  = int.Parse(HeaderElement.Element(ns + "CompanyID").Value);
                AuditFile.FiscalYear = int.Parse(HeaderElement.Element(ns + "FiscalYear").Value);
                AuditFile.Header     = new Header
                {
                    AuditFileVersion      = HeaderElement.Element(ns + "AuditFileVersion").Value,
                    CompanyID             = int.Parse(HeaderElement.Element(ns + "CompanyID").Value),
                    TaxRegistrationNumber = int.Parse(HeaderElement.Element(ns + "TaxRegistrationNumber").Value),
                    TaxAccountingBasis    = HeaderElement.Element(ns + "TaxAccountingBasis").Value,
                    CompanyName           = HeaderElement.Element(ns + "CompanyName").Value,
                    FiscalYear            = int.Parse(HeaderElement.Element(ns + "FiscalYear").Value),
                    StartDate             = DateTime.Parse(HeaderElement.Element(ns + "StartDate").Value),
                    EndDate                   = DateTime.Parse(HeaderElement.Element(ns + "EndDate").Value),
                    CurrencyCode              = HeaderElement.Element(ns + "CurrencyCode").Value,
                    DateCreated               = DateTime.Parse(HeaderElement.Element(ns + "DateCreated").Value),
                    TaxEntity                 = HeaderElement.Element(ns + "TaxEntity").Value,
                    ProductCompanyTaxID       = int.Parse(HeaderElement.Element(ns + "ProductCompanyTaxID").Value),
                    SoftwareCertificateNumber = HeaderElement.Element(ns + "SoftwareCertificateNumber").Value,
                    ProductID                 = HeaderElement.Element(ns + "ProductID").Value,
                    ProductVersion            = HeaderElement.Element(ns + "ProductVersion").Value,
                };

                XElement CompanyAddressElement = HeaderElement.Element(ns + "CompanyAddress");
                AuditFile.Header.CompanyAddress = new CompanyAddress
                {
                    StreetName    = CompanyAddressElement.Element(ns + "StreetName").Value,
                    AddressDetail = CompanyAddressElement.Element(ns + "AddressDetail").Value,
                    City          = CompanyAddressElement.Element(ns + "City").Value,
                    Country       = CompanyAddressElement.Element(ns + "Country").Value,
                    PostalCode    = CompanyAddressElement.Element(ns + "PostalCode").Value,
                    Region        = CompanyAddressElement.Element(ns + "Region").Value,
                };

                if (Context.AuditFile.Any(e => e.Header.CompanyID == AuditFile.Header.CompanyID && e.Header.FiscalYear == AuditFile.Header.FiscalYear))
                {
                    return(Request.CreateResponse(HttpStatusCode.OK, "Audit file already exists."));
                }

                #endregion

                #region SourceDocuments

                XElement SourceDocumentsElement = Doc.Root.Element(ns + "SourceDocuments");
                AuditFile.SourceDocuments = new SourceDocuments
                {
                    SalesInvoices = new SalesInvoices(),
                };

                XElement SalesInvoicesElement = SourceDocumentsElement.Element(ns + "SalesInvoices");
                AuditFile.SourceDocuments.SalesInvoices = new SalesInvoices
                {
                    NumberOfEntries = int.Parse(SalesInvoicesElement.Element(ns + "NumberOfEntries").Value),
                    TotalDebit      = float.Parse(SalesInvoicesElement.Element(ns + "TotalDebit").Value),
                    TotalCredit     = float.Parse(SalesInvoicesElement.Element(ns + "TotalCredit").Value),
                    Invoices        = new List <Invoice>(),
                };

                IEnumerable <XElement> InvoicesElements = SalesInvoicesElement.Elements(ns + "Invoice");
                foreach (var InvoiceElement in InvoicesElements)
                {
                    Invoice Invoice = new Invoice
                    {
                        InvoiceNo         = InvoiceElement.Element(ns + "InvoiceNo").Value,
                        ATCUD             = InvoiceElement.Element(ns + "ATCUD").Value,
                        Hash              = InvoiceElement.Element(ns + "Hash").Value,
                        HashControl       = int.Parse(InvoiceElement.Element(ns + "HashControl").Value),
                        Period            = InvoiceElement.Element(ns + "Period").Value,
                        InvoiceDate       = DateTime.Parse(InvoiceElement.Element(ns + "InvoiceDate").Value),
                        InvoiceType       = InvoiceElement.Element(ns + "InvoiceType").Value,
                        SourceID          = InvoiceElement.Element(ns + "SourceID").Value,
                        SystemEntryDate   = DateTime.Parse(InvoiceElement.Element(ns + "SystemEntryDate").Value),
                        CustomerID        = InvoiceElement.Element(ns + "CustomerID").Value,
                        MovementStartTime = DateTime.Parse(InvoiceElement.Element(ns + "MovementStartTime").Value),
                        Lines             = new List <InvoiceLine>(),
                    };

                    XElement DocumentStatusElement = InvoiceElement.Element(ns + "DocumentStatus");
                    Invoice.DocumentStatus = new DocumentStatus
                    {
                        InvoiceStatus     = DocumentStatusElement.Element(ns + "InvoiceStatus").Value,
                        InvoiceStatusDate = DateTime.Parse(DocumentStatusElement.Element(ns + "InvoiceStatusDate").Value),
                        SourceID          = DocumentStatusElement.Element(ns + "SourceID").Value,
                        SourceBilling     = DocumentStatusElement.Element(ns + "SourceBilling").Value,
                    };

                    XElement SpecialRegimesElement = InvoiceElement.Element(ns + "SpecialRegimes");
                    Invoice.SpecialRegimes = new SpecialRegimes
                    {
                        SelfBillingIndicator         = int.Parse(SpecialRegimesElement.Element(ns + "SelfBillingIndicator").Value),
                        CashVATSchemeIndicator       = int.Parse(SpecialRegimesElement.Element(ns + "CashVATSchemeIndicator").Value),
                        ThirdPartiesBillingIndicator = int.Parse(SpecialRegimesElement.Element(ns + "ThirdPartiesBillingIndicator").Value),
                    };

                    XElement ShipToElement = InvoiceElement.Element(ns + "ShipTo");
                    Invoice.ShipTo = new ShipTo
                    {
                        DeliveryDate = DateTime.Parse(ShipToElement.Element(ns + "DeliveryDate").Value),
                    };
                    XElement ShipToAddressElement = ShipToElement.Element(ns + "Address");
                    Invoice.ShipTo.Address = new Address
                    {
                        AddressDetail = ShipToAddressElement.Element(ns + "AddressDetail").Value,
                        City          = ShipToAddressElement.Element(ns + "City").Value,
                        PostalCode    = ShipToAddressElement.Element(ns + "PostalCode").Value,
                        Country       = ShipToAddressElement.Element(ns + "Country").Value,
                    };

                    XElement ShipFromElement = InvoiceElement.Element(ns + "ShipFrom");
                    Invoice.ShipFrom = new ShipFrom
                    {
                        DeliveryDate = DateTime.Parse(ShipFromElement.Element(ns + "DeliveryDate").Value),
                    };
                    XElement ShipFromAddressElement = ShipFromElement.Element(ns + "Address");
                    Invoice.ShipFrom.Address = new Address
                    {
                        AddressDetail = ShipFromAddressElement.Element(ns + "AddressDetail").Value,
                        City          = ShipFromAddressElement.Element(ns + "City").Value,
                        PostalCode    = ShipFromAddressElement.Element(ns + "PostalCode").Value,
                        Country       = ShipFromAddressElement.Element(ns + "Country").Value,
                    };

                    XElement DocumentTotalsElement = InvoiceElement.Element(ns + "DocumentTotals");
                    Invoice.DocumentTotals = new DocumentTotals
                    {
                        GrossTotal = float.Parse(DocumentTotalsElement.Element(ns + "GrossTotal").Value),
                        NetTotal   = float.Parse(DocumentTotalsElement.Element(ns + "NetTotal").Value),
                        TaxPayable = float.Parse(DocumentTotalsElement.Element(ns + "TaxPayable").Value),
                    };

                    XElement WithholdingTaxElement = InvoiceElement.Element(ns + "WithholdingTax");
                    Invoice.WithholdingTax = new WithholdingTax
                    {
                        WithholdingTaxAmount = float.Parse(WithholdingTaxElement.Element(ns + "WithholdingTaxAmount").Value),
                    };

                    IEnumerable <XElement> LineElements = InvoiceElement.Elements(ns + "Line");
                    foreach (var LineElement in LineElements)
                    {
                        InvoiceLine Line = new InvoiceLine
                        {
                            LineNumber         = int.Parse(LineElement.Element(ns + "LineNumber").Value),
                            ProductCode        = LineElement.Element(ns + "ProductCode").Value,
                            ProductDescription = LineElement.Element(ns + "ProductDescription").Value,
                            Quantity           = int.Parse(LineElement.Element(ns + "Quantity").Value),
                            UnitOfMeasure      = LineElement.Element(ns + "UnitOfMeasure").Value,
                            UnitPrice          = float.Parse(LineElement.Element(ns + "UnitPrice").Value),
                            TaxPointDate       = DateTime.Parse(LineElement.Element(ns + "TaxPointDate").Value),
                            Description        = LineElement.Element(ns + "Description").Value,
                            CreditAmount       = float.Parse(LineElement.Element(ns + "CreditAmount").Value),
                            SettlementAmount   = float.Parse(LineElement.Element(ns + "SettlementAmount").Value),
                        };

                        XElement TaxElement = LineElement.Element(ns + "Tax");
                        Line.Tax = new Tax
                        {
                            TaxCode          = TaxElement.Element(ns + "TaxCode").Value,
                            TaxCountryRegion = TaxElement.Element(ns + "TaxCountryRegion").Value,
                            TaxPercentage    = float.Parse(TaxElement.Element(ns + "TaxPercentage").Value),
                            TaxType          = TaxElement.Element(ns + "TaxType").Value,
                        };

                        Invoice.Lines.Add(Line);
                    }

                    AuditFile.SourceDocuments.SalesInvoices.Invoices.Add(Invoice);
                }

                #endregion

                #region MasterFiles

                XElement MasterFilesElement = Doc.Root.Element(ns + "MasterFiles");
                AuditFile.MasterFiles = new MasterFiles
                {
                    Customers             = new List <Customer>(),
                    GeneralLedgerAccounts = new GeneralLedgerAccounts(),
                };

                XElement GeneralLedgerAccountsElement = MasterFilesElement.Element(ns + "GeneralLedgerAccounts");
                AuditFile.MasterFiles.GeneralLedgerAccounts = new GeneralLedgerAccounts
                {
                    Accounts = new List <Account>(),
                };
                IEnumerable <XElement> AccountElements = GeneralLedgerAccountsElement.Elements(ns + "Account");
                foreach (var AccountElement in AccountElements)
                {
                    Account Account = new Account
                    {
                        AccountID            = long.Parse(AccountElement.Element(ns + "AccountID").Value),
                        AccountDescription   = AccountElement.Element(ns + "AccountDescription").Value,
                        OpeningDebitBalance  = float.Parse(AccountElement.Element(ns + "OpeningDebitBalance").Value),
                        OpeningCreditBalance = float.Parse(AccountElement.Element(ns + "OpeningCreditBalance").Value),
                        ClosingDebitBalance  = float.Parse(AccountElement.Element(ns + "ClosingDebitBalance").Value),
                        ClosingCreditBalance = float.Parse(AccountElement.Element(ns + "ClosingCreditBalance").Value),
                        GroupingCategory     = AccountElement.Element(ns + "GroupingCategory").Value,
                    };

                    AuditFile.MasterFiles.GeneralLedgerAccounts.Accounts.Add(Account);
                }

                IEnumerable <XElement> CustomerElements = MasterFilesElement.Elements(ns + "Customer");
                foreach (var CustomerElement in CustomerElements)
                {
                    Customer Customer = new Customer
                    {
                        AccountID            = CustomerElement.Element(ns + "AccountID").Value,
                        CompanyName          = CustomerElement.Element(ns + "CompanyName").Value,
                        CustomerID           = CustomerElement.Element(ns + "CustomerID").Value,
                        CustomerTaxID        = CustomerElement.Element(ns + "CustomerTaxID").Value,
                        SelfBillingIndicator = CustomerElement.Element(ns + "SelfBillingIndicator").Value,
                    };

                    XElement BillingAddressElement = CustomerElement.Element(ns + "BillingAddress");
                    Customer.BillingAddress = new Address
                    {
                        AddressDetail = BillingAddressElement.Element(ns + "AddressDetail").Value,
                        City          = BillingAddressElement.Element(ns + "City").Value,
                        Country       = BillingAddressElement.Element(ns + "Country").Value,
                        PostalCode    = BillingAddressElement.Element(ns + "PostalCode").Value,
                    };

                    XElement ShipToAddressElement = CustomerElement.Element(ns + "ShipToAddress");
                    Customer.ShipToAddress = new Address
                    {
                        AddressDetail = ShipToAddressElement.Element(ns + "AddressDetail").Value,
                        City          = ShipToAddressElement.Element(ns + "City").Value,
                        Country       = ShipToAddressElement.Element(ns + "Country").Value,
                        PostalCode    = ShipToAddressElement.Element(ns + "PostalCode").Value,
                    };

                    AuditFile.MasterFiles.Customers.Add(Customer);
                }

                #endregion

                Context.AuditFile.Add(AuditFile);
                Context.SaveChanges();

                return(Request.CreateResponse(HttpStatusCode.Created, "Created audit file."));
            }
        }