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; }
public void IntegrateInvoice(Invoice i) { SyncAccount(i); int countproduct = i.Products.Count; for (int k=0; k < countproduct; k++) { SyncProduct(i,k); } SyncInvoice(i); }
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); } }
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); }
/// <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); }*/ } }
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); } */ }
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); } }