public Result IntegrateInvoice(string id, Invoice invoice)
 {
     var result = new Result
     {
         Message = "",
         Status = "OK",
         InvoiceId = invoice.Id
     };
     try
     {
         using (var integrator = new Integrator(_oneSUser, _oneSPassword, _pathToDb))
         {
             integrator.IntegrateInvoice(invoice);
         }
        
     }
     catch (Exception e)
     {
        // _integrator.Dispose();
         result.Message = e.Message;
         result.Status = "Error";
     }
     
     return result;
 }
Exemplo n.º 2
0
        public void IntegrateInvoice(Invoice i)
        {
           SyncAccount(i);
           int countproduct = i.Products.Count;
           for (int k=0; k < countproduct; k++) 
           {
               SyncProduct(i,k);
           }
              
           SyncInvoice(i);

        }
Exemplo n.º 3
0
        private void SyncInvoice(Invoice i)
        {


            var code1c = i.Number;
            object invoice = Open("Документ.Счет");
            DateTime date = i.StartDate;
            var curinvoice = FindByNumber(invoice, code1c, date);
            if (curinvoice != null)
            {
                UpdateInvoice(invoice, i);
            }
            else
            {
                Create(invoice);
                UpdateInvoice(invoice, i);
              
            }

        }
Exemplo n.º 4
0
        private void UpdateInvoice(object invoice1C, Invoice i) 
        {
            Set(invoice1C, "ДатаДок", i.StartDate);
            Set(invoice1C, "НомерДок", i.Number);
            Set(invoice1C, "НомерДоговора", i.Contract.Number);
            Set(invoice1C, "ДатаДоговора", i.Contract.StartDate);
            var accountcode = i.Account.Code1C;
            object account = Open("Справочник.Контрагенты");
            var curaccount = FindByCode(account, accountcode);
            if (curaccount != null)
            {
                Set(invoice1C, "Контрагент", curaccount);
                Set(invoice1C, "Плательщик", curaccount);
            }
            object accbill = Open("Справочник.РасчетныеСчета");

            var current = FindByCode(accbill, i.Account.BillingInfo.Code1C);
            if (current != null)
            {
                Set(invoice1C, "РасчетныйСчет", current);
            }
            int countproduct = i.Products.Count;
            DeleteTable(invoice1C);
            for (int k = 0; k < countproduct; k++)
            {

                CreateTableInvoice(invoice1C, i, k);
            }
            Save(invoice1C);
        }
Exemplo n.º 5
0
 /// <summary>
 /// Invoice
 /// </summary>
 /// <param name="invoice1C"></param>
 /// <param name="i"></param>
 /// 
 private void CreateTableInvoice(object invoice1C, Invoice i, int countproduct)
 {
     OpenTable(invoice1C);
     Set(invoice1C, "Количество", i.Products[countproduct].Quantity);
     Set(invoice1C, "Цена", i.Products[countproduct].Price);
     Set(invoice1C, "Всего", i.Products[countproduct].TotalAmount);
     var prodcode1c = i.Products[countproduct].Product.Code1C;
     object product = Open("Справочник.Номенклатура");
     var curproduct = FindByProperty(product, "Артикул", prodcode1c);
     if (curproduct != null)
     {
         Set(invoice1C, "Товар", curproduct);
     }
     object tax1C = Open("Справочник.СтавкиНДС");
     if (i.Products[countproduct].Product.Tax != null)
     {
         Set(invoice1C, "НДС", i.Products[countproduct].Product.Tax.Percent);
         /*
         var tax = FindByProperty(tax1C, "Ставка", i.Products[countproduct].Product.Tax.Percent.ToString());
         if (tax != null)
         {
             Set(invoice1C, "НДС", tax);
         }*/
     }
 }
Exemplo n.º 6
0
        private void SyncAccount(Invoice i)
        {

            
            string code1c = i.Account.Code1C;
            object account = Open("Справочник.Контрагенты");
            var curaccount = FindByCode(account, code1c);
            if (curaccount != null)
            {
                UpdateAccount(account, i.Account, code1c);

            }
            else
            {
                Create(account);
                Set(account, "Код", code1c);
                UpdateAccount(account, i.Account, code1c);
            }
            SyncAccountBilling(i.Account.BillingInfo,curaccount, i.Account);
            SyncCalculateInvoice(i.Account.BillingInfo, curaccount, i.Account);
            /*
            object accbill = Open("Справочник.яКонтрагенты");

            var current = _type1C.InvokeMember("ИспользоватьВладельца", BindingFlags.Public | BindingFlags.InvokeMethod, null, accbill, new object[] { curaccount });
            if (current != null)
            {
                Create(accbill);
                UpdateAccountBilling(accbill, i.Account.BillingInfo, i.Account);
            }
            else { UpdateAccountBilling(accbill, i.Account.BillingInfo, i.Account); }
           
            */
        }
Exemplo n.º 7
0
        private void SyncProduct(Invoice i, int countproduct) 
        {
            string code1c = i.Products[countproduct].Product.Code1C;
            object product=Open("Справочник.Номенклатура");
            var curproduct = FindByProperty(product, "Артикул", code1c);
            if (curproduct != null)
            {
                UpdateProduct(product, i.Products[countproduct].Product, code1c);

            }
            else
            {
                Create(product);
                SetCode(product);
                UpdateProduct(product, i.Products[countproduct].Product, code1c);
                
            }
        
        }