Ejemplo n.º 1
0
        void GetDataFromXElement()
        {
            ID         = CustomerElement.Element("id")?.Value;
            Name       = CustomerElement.Element("name")?.Value;
            Address    = CustomerElement.Element("address")?.Value;
            City       = CustomerElement.Element("city")?.Value;
            PostalCode = CustomerElement.Element("postalcode")?.Value;
            Country    = CustomerElement.Element("country")?.Value;
            Phone      = CustomerElement.Element("phone")?.Value;
            Fax        = CustomerElement.Element("fax")?.Value;
            Region     = CustomerElement.Element("region")?.Value;
            var orders = CustomerElement.Element("orders").Elements("order").ToList();

            foreach (XElement element in orders)
            {
                Orders.Add(new Order(element));
            }
        }
Ejemplo n.º 2
0
        public void GetDataFromXElement()
        {
            this.ID         = CustomerElement.Element("id")?.Value;
            this.Name       = CustomerElement.Element("name")?.Value;
            this.Address    = CustomerElement.Element("address")?.Value;
            this.City       = CustomerElement.Element("city")?.Value;
            this.PostalCode = CustomerElement.Element("postalcode")?.Value;
            this.Country    = CustomerElement.Element("country")?.Value;
            this.Phone      = CustomerElement.Element("phone")?.Value;
            this.Fax        = CustomerElement.Element("fax")?.Value;
            this.Region     = CustomerElement.Element("region")?.Value;
            var orders = CustomerElement.Element("orders").Elements("order").ToList();

            foreach (XElement xe in orders)
            {
                Orders.Add(new Order(xe));
            }
        }
Ejemplo n.º 3
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."));
            }
        }