public static void Обновить(IObjectSpace os, ОперацияКонтИмпортСтруктур конт, Основание.ТипИсточника источник, fmCAVTBookBuhStructRecord запись) { Документ cur_doc = null; UInt16 change_number = 0; if (!String.IsNullOrEmpty(запись.InvoiceChangeNumber)) { UInt16.TryParse(запись.InvoiceChangeNumber, out change_number); } foreach (var doc in конт.Документы) { if (doc.ТипИсточника == источник && doc.Контрагент == запись.PartnerParty && doc.Номер == запись.InvoiceNumber && doc.Дата == запись.InvoiceDate && doc.НомерИсправления == change_number && doc.ДатаИсправления == запись.InvoiceChangeDate) { cur_doc = doc; break; } } if (cur_doc == null) { cur_doc = os.CreateObject <Документ>(); конт.Документы.Add(cur_doc); cur_doc.ТипИсточника = источник; cur_doc.Контрагент = запись.PartnerParty; cur_doc.Номер = запись.InvoiceNumber; cur_doc.Дата = запись.InvoiceDate; cur_doc.НомерИсправления = change_number; cur_doc.ДатаИсправления = запись.InvoiceChangeDate; // cur_doc.СчетФактураУст(запись.Invoice); cur_doc.ТипОснования = Основание.String2ТипОснования(запись.InvoiceType); if (источник == Основание.ТипИсточника.ВХОДЯЩИЙ || cur_doc.ТипОснования == Основание.ТипОснования.ГТД || cur_doc.ТипОснования == Основание.ТипОснования.СФЗ) { cur_doc.егНомер = запись.InvoiceRegNumber; } else { String dates = запись.InvoiceDate.ToString("yyyyMMdd"); // !!!!!!!!!!!!!!!! // Ошибочные номера счетов-фактур выставленных // if (запись.InvoiceNumber[0] == '0') // cur_doc.РегНомер = запись.InvoiceRegNumber[0] + dates.Substring(2, 2) + запись.InvoiceRegNumber.Substring(1); // else cur_doc.егНомер = запись.InvoiceNumber[0] + dates.Substring(2, 2) + запись.InvoiceNumber.Substring(1); // cur_doc.РегНомер = запись.InvoiceRegNumber; } } ОбновитьДокумент(os, cur_doc, источник, запись); if (источник == Основание.ТипИсточника.ИСХОДЯЩИЙ) { ОбновитьОперациюПродаж(os, конт, cur_doc, источник, запись); } if (источник == Основание.ТипИсточника.ВХОДЯЩИЙ) { ОбновитьОперациюПокупок(os, конт, cur_doc, источник, запись); } }
public static void Обновить(IObjectSpace os, ОперацияКонтИмпортСтруктур конт) { os.Delete(конт.Операции); foreach (var запись in конт.ДанныеСтруктур.InInvoiceRecords) { Обновить(os, конт, Основание.ТипИсточника.ВХОДЯЩИЙ, запись); } foreach (var запись in конт.ДанныеСтруктур.OutInvoiceRecords) { Обновить(os, конт, Основание.ТипИсточника.ИСХОДЯЩИЙ, запись); } // public static void Обновить(IObjectSpace os, XPCollection<fmCAVTBookBuhStructRecord> записи) { }
public void Обновить() { IObjectSpace os_cur = CommonMethods.FindObjectSpaceByObject(this); using (IObjectSpace os = os_cur.CreateNestedObjectSpace()) { ОперацияКонтИмпортСтруктур конт = os.GetObject <ОперацияКонтИмпортСтруктур>(this); if (конт.ДанныеСтруктур == null) { return; } Обновить(os, конт); // Перенумеровать(os, book); os.CommitChanges(); } }
public static void ОбновитьОперациюПокупок(IObjectSpace os, ОперацияКонтИмпортСтруктур конт, Документ док, Основание.ТипИсточника источник, fmCAVTBookBuhStructRecord запись) { if (док.Основание == null || запись.SummAll == 0) { return; } Операция опер = os.CreateObject <Операция>(); конт.Операции.Add(опер); опер.ОснованиеДокумент = док.ОснованиеДокумент; опер.ТипКниги = Операция.ТипКнигиТип.ПОКУПОК; опер.ТипДеятельности = Операция.ТипДеятельностиТип.ОБЛ_18; опер.ТипОбъекта = Операция.ТипОбъектаТип.ЕАЛИЗАЦИЯ; опер.ТипНапрОпер = Операция.ТипНапрОперТип.НОРМАЛЬНЫЙ; if (запись.OperationType == null) { throw new ArgumentNullException("Незадан Тип операции для " + опер.ОснованиеДокумент); } if (запись.OperationType.Code == "01" || запись.OperationType.Code == "1") { опер.ТипОперВнутр = Операция.ТипОперВнутрТип.ЕАЛИЗАЦИЯ; } if (запись.OperationType.Code == "02" || запись.OperationType.Code == "2") { опер.ТипОперВнутр = Операция.ТипОперВнутрТип.АВАНС_ЗАЧЕТ; } опер.ТипОсновной = Операция.ТипОсновнойТип.ВЫЧЕТ; опер.ОснованиеРегНомер = док.егНомер; опер.СФТип = запись.InvoiceType; опер.СФНомер = запись.InvoiceNumber; опер.СФДата = запись.InvoiceDate; CS.Finance.csNDSRate rate = запись.BayVATRate; if (rate == null) { rate = запись.SaleVATRate; } if (rate != null) { if (rate.Code == "18%") { опер.Ставка = СтавкаНДС.ОБЛ_18; } if (rate.Code == "10%") { опер.Ставка = СтавкаНДС.ОБЛ_10; } if (rate.Code == "0%") { опер.Ставка = СтавкаНДС.ОБЛ_0; } if (rate.Code == "БЕЗ НДС") { опер.Ставка = СтавкаНДС.НЕОБЛ; } } else { опер.Ставка = СтавкаНДС.ОБЛ_18; } опер.ПериодБУ = конт.ПериодБУ; опер.ДатаБУ = конт.ДатаБУ; опер.ДатаНДС = запись.BayDate; if (запись.BayDate > new DateTime(2000, 1, 1)) { опер.ДатаНДС = запись.BayDate; } else { опер.ДатаНДС = опер.Контейнер.ПериодНДС != null ? опер.Контейнер.ПериодНДС.ДатаПо : default(DateTime); } // if (запись.BaySummVAT != 0) // throw new ArgumentOutOfRangeException("Незадана дата отнесения для покупок "); // опер.ДатаНДС = опер.ДатаБУ; if (запись.SaleSummAll != 0) { опер.СуммаВсего = запись.BaySummAll; } else { опер.СуммаВсего = запись.SummAll; } if (запись.SaleSummVAT != 0) { опер.СуммаНДСВычет = запись.BaySummVAT; } else { опер.СуммаНДСВычет = запись.SummVAT; } опер.СуммаСтоимость = опер.СуммаВсего - опер.СуммаНДСВычет; if (опер.ТипОперВнутр == Операция.ТипОперВнутрТип.ЕАЛИЗАЦИЯ) { опер.СуммаНДС19Входящий = опер.СуммаНДСВычет; опер.СуммаНДС19Списано = опер.СуммаНДСВычет; } if (док.Контейнер != null && док.Контейнер.ДоляСтоимость > 0) { опер.СуммаНДССтоимость = Decimal.Round(опер.СуммаНДСВычет * док.Контейнер.ДоляСтоимость, 2); опер.СуммаНДСВычет = опер.СуммаНДСВычет - опер.СуммаНДССтоимость; } }
public static void ОбновитьОперациюПродаж(IObjectSpace os, ОперацияКонтИмпортСтруктур конт, Документ док, Основание.ТипИсточника источник, fmCAVTBookBuhStructRecord запись) { if (док.Основание == null || запись.SummAll == 0) { return; } Операция опер = os.CreateObject <Операция>(); конт.Операции.Add(опер); опер.ОснованиеДокумент = док.ОснованиеДокумент; опер.ТипКниги = Операция.ТипКнигиТип.ПРОДАЖ; опер.ТипДеятельности = Операция.ТипДеятельностиТип.ОБЛ_18; опер.ТипОбъекта = Операция.ТипОбъектаТип.ЕАЛИЗАЦИЯ; опер.ТипНапрОпер = Операция.ТипНапрОперТип.НОРМАЛЬНЫЙ; if (запись.OperationType.Code == "01" || запись.OperationType.Code == "1") { опер.ТипОперВнутр = Операция.ТипОперВнутрТип.ЕАЛИЗАЦИЯ; } if (запись.OperationType.Code == "02" || запись.OperationType.Code == "2") { опер.ТипОперВнутр = Операция.ТипОперВнутрТип.АВАНС; } опер.ТипОсновной = Операция.ТипОсновнойТип.НАЛ_БАЗА; опер.ОснованиеРегНомер = док.егНомер; опер.СФТип = запись.InvoiceType; опер.СФНомер = запись.InvoiceNumber; опер.СФДата = запись.InvoiceDate; CS.Finance.csNDSRate rate = запись.SaleVATRate; if (rate == null) { rate = запись.BayVATRate; } if (rate != null) { if (rate.Code == "18%") { опер.Ставка = СтавкаНДС.ОБЛ_18; } if (rate.Code == "10%") { опер.Ставка = СтавкаНДС.ОБЛ_10; } if (rate.Code == "0%") { опер.Ставка = СтавкаНДС.ОБЛ_0; } if (rate.Code == "БЕЗ НДС") { опер.Ставка = СтавкаНДС.НЕОБЛ; } } else { опер.Ставка = СтавкаНДС.ОБЛ_18; } if (запись.SaleDate > new DateTime(2000, 1, 1)) { опер.ДатаНДС = запись.SaleDate; } else { опер.ДатаНДС = запись.InvoiceDate; } опер.ПериодБУ = конт.ПериодБУ; опер.ДатаБУ = конт.ДатаБУ; if (запись.SaleSummAll != 0) { опер.СуммаВсего = запись.SaleSummAll; } else { опер.СуммаВсего = запись.SummAll; } if (запись.SaleSummVAT != 0) { опер.СуммаНДСБаза = запись.SaleSummVAT; } else { опер.СуммаНДСБаза = запись.SummVAT; } опер.СуммаСтоимость = опер.СуммаВсего - опер.СуммаНДСБаза; }