Exemple #1
0
        public static string updateorcreatexeroinvoice(InvoiceReadOnly Uinvoice, string clientxeroid)
        {
            XeroCoreApi xeroapp = getxeroapp();

            Xero.Api.Core.Model.Invoice Xinvoice = new Xero.Api.Core.Model.Invoice();
            Xinvoice.Number = Uinvoice.Number;
            Xero.Api.Core.Model.Contact Xcontact = xeroapp.Contacts.Find(new Guid(clientxeroid));
            Xinvoice.Contact         = Xcontact;
            Xinvoice.Date            = Convert.ToDateTime(Uinvoice.CreatedDate);
            Xinvoice.Type            = Xero.Api.Core.Model.Types.InvoiceType.AccountsReceivable;
            Xinvoice.LineAmountTypes = Xero.Api.Core.Model.Types.LineAmountType.Inclusive;
            Xinvoice.Status          = Xero.Api.Core.Model.Status.InvoiceStatus.Authorised;
            Xinvoice.DueDate         = Convert.ToDateTime(Uinvoice.DueDate);
            List <LineItem> Xiilist = new List <LineItem>();

            foreach (InvoiceItemReadOnly uii in Uinvoice.Items)
            {
                Xero.Api.Core.Model.LineItem xii = new Xero.Api.Core.Model.LineItem();
                xii.Quantity    = Convert.ToDecimal(uii.Quantity);
                xii.Description = uii.Label;
                xii.UnitAmount  = Convert.ToDecimal(uii.Price);
                xii.LineAmount  = Convert.ToDecimal(uii.Total);
                xii.AccountCode = "200";
                Xiilist.Add(xii);
            }
            Xinvoice.LineItems = Xiilist;
            Xero.Api.Core.Model.Invoice Xinvoicereturned = xeroapp.Update(Xinvoice);

            UnmsInvoice      UXinvoice        = new UnmsInvoice();
            InvoiceAttribute newUcrmAttribute = new InvoiceAttribute()
            {
                CustomAttributeId = UNMSHelper.getcustomattributeid("xeroIdinvoice"),
                Value             = Xinvoicereturned.Id.ToString()
            };
            List <InvoiceAttribute> newlistattributes = new List <InvoiceAttribute>();

            newlistattributes.Add(newUcrmAttribute);
            UXinvoice.attributes = newlistattributes;

            HTTPHelper.httpPatch("invoices" + "/" + Uinvoice.Id, UXinvoice);
            return(Xinvoice.Id.ToString());
        }
Exemple #2
0
        private void btnInvoice_Click(object sender, EventArgs e)
        {
            var invoiceTime = Stopwatch.StartNew();
            Invoice invoice = new Invoice();
            invoice.LineItems = new List<LineItem>();

            LineItem item = new LineItem();
            item.Quantity = Convert.ToDecimal(txtQuantity.Text);
            item.UnitAmount = Convert.ToDecimal(txtUnitAmount.Text);

            item.Description = txtInvoiceDescription.Text;
            item.AccountCode = "200";
            item.ItemCode =  txtItemCode.Text.Trim();
            invoice.LineItems.Add(item);
            txtPaidAmount.Text = (item.Quantity * item.UnitAmount).ToString();

            invoice.Date = DateTime.Now;
            invoice.DueDate = DateTime.Now.AddDays(3);
            invoice.Type = InvoiceType.AccountsReceivable;
            invoice.Status = InvoiceStatus.Authorised;
            invoice.LineAmountTypes = LineAmountType.Inclusive;

            XeroAPI xeroapi = new XeroAPI(api);
            string contactId = txtContactId.Text;

            lblInvoiceID.Text = xeroapi.InvoiceCreate(invoice, contactId);
            invoiceTime.Stop();
            lblInvoiceTime.Text = "Execute time: " + invoiceTime.Elapsed.TotalSeconds.ToString() + "s";
        }
        public Invoice convert(InvoiceViewModel invoiceViewModel)
        {
            ContactViewModelToContactConverter contactConverter = new ContactViewModelToContactConverter();
            Invoice invoice = new Invoice();
            if (!(string.IsNullOrEmpty(invoiceViewModel.BrandingThemeId)))
            {
                try
                {
                    invoice.BrandingThemeId = Guid.Parse(invoiceViewModel.BrandingThemeId);
                }
                catch (ArgumentNullException)
                {
                    throw new BrandingThemeIsNullException("Branding theme can not be empty");
                }
                catch (FormatException)
                {
                    throw new BrandingThemeIdIsNotVallid("Branding theme id is not a vallid branding theme id");
                }
            }
            invoice.Contact = contactConverter.Convert(invoiceViewModel.Contact);

            if(!(string.IsNullOrEmpty(invoiceViewModel.CurrencyCode)))
            {
                invoice.CurrencyCode = invoiceViewModel.CurrencyCode;
            }
            invoice.Date = invoiceViewModel.Date;
            invoice.DueDate = invoiceViewModel.DueDate;

            List<LineItem> lineItemList = new List<LineItem>();
            ItemTrackingCategory itemTrackingCategory = new ItemTrackingCategory();
            itemTrackingCategory.Name = invoiceViewModel.TrackingName;
            itemTrackingCategory.Option = invoiceViewModel.TrackingOption;

            ItemTracking itemTraking = new ItemTracking()
            {
               itemTrackingCategory
            };

            string taxType = null;

            if (invoiceViewModel.TaxType == "15% GST on Income")
            {
                taxType = "OUTPUT2";
            }

            if (invoiceViewModel.TaxType == "No GST")
            {
                taxType = "NONE";
            }

            if (invoiceViewModel.TaxType == "15% GST on Expenses")
            {
                taxType = "INPUT2";
            }

            LineItem lineItem = new LineItem();

            lineItem.Description = invoiceViewModel.Description;
            if (invoiceViewModel.DiscountRate > 0)
            {
                lineItem.DiscountRate = invoiceViewModel.DiscountRate;
            }
            //lineItem.ItemCode = invoiceViewModel.ItemCode;
            lineItem.ItemCode = "GB3-White";
            lineItem.Quantity = invoiceViewModel.Quantity;
            lineItem.TaxType = taxType;
            lineItem.Tracking = itemTraking;
            lineItem.UnitAmount = invoiceViewModel.UnitAmount;
            lineItem.AccountCode = invoiceViewModel.AccountCode;

            lineItemList.Add(lineItem);
            invoice.Items = lineItemList;
            invoice.Number = invoiceViewModel.Number;
            invoice.Reference = invoiceViewModel.Reference;
            invoice.Status = InvoiceStatus.Draft;
            if (invoiceViewModel.typeOfInvoice == "ACCPAY")
            {
                invoice.Type = InvoiceType.AccountsPayable;
            }

            if (invoiceViewModel.typeOfInvoice == "ACCREC")
            {
                invoice.Type = InvoiceType.AccountsReceivable;
            }

            if (invoiceViewModel.typeOfInvoice == "ACCREC")
            {
                invoice.Type = InvoiceType.AccountsReceivable;
                CreditNote cr = new CreditNote();

            }

            return invoice;
        }