// private Int32 CurLine; protected override void ProcessCell(string sheet, int row, int column, string type, string value) { Double value_double; Decimal value_decimal; if (sheet != "СФ Полученные" && sheet != "СФ Выставленные" || row < 4) { return; } if (column > 1 && (CurRecord == null || CurRecord.RowNumber != row || sheet == "СФ Полученные" && CurRecord.InInvoiceStructRecord == null || sheet == "СФ Выставленные" && CurRecord.OutInvoiceStructRecord == null)) { return; } try { switch (column) { case 1: if (value == null || String.IsNullOrEmpty(value.Trim()) || value == "Итог") { CurRecord = null; // CurRow = 0; } else { CurRecord = ObjectSpace.CreateObject <fmCAVTBookBuhStructRecord>(); CurRecord.RowNumber = row; // CurRow = row; CurRecord.InvoiceRegNumber = value; if (sheet == "СФ Полученные") { StructBook.InInvoiceRecords.Add(CurRecord); } if (sheet == "СФ Выставленные") { StructBook.OutInvoiceRecords.Add(CurRecord); } } break; case 2: CurRecord.InvoiceType = value; break; case 3: CurRecord.TransferType = _TransferTypes.Where(rec => rec.Code == value).FirstOrDefault(); break; case 4: if (value.Length == 1) { value = '0' + value; } CurRecord.OperationType = _OperationTypes.Where(rec => rec.Code == value).FirstOrDefault(); break; case 5: CurRecord.InvoiceNumber = value; break; case 6: CurRecord.InvoiceDate = DateTime.Parse(value, FormatProvider); break; case 7: CurRecord.InvoiceChangeNumber = value; break; case 8: CurRecord.InvoiceChangeDate = DateTime.Parse(value, FormatProvider); break; case 9: CurRecord.InvoiceCorrectNumber = value; break; case 10: CurRecord.InvoiceCorrectDate = DateTime.Parse(value, FormatProvider); break; case 11: CurRecord.InvoiceCorrectChangeNumber = value; break; case 12: CurRecord.InvoiceCorrectChangeDate = DateTime.Parse(value, FormatProvider); break; case 13: CurRecord.TransferDate = DateTime.Parse(value, FormatProvider); break; case 14: String inn = value == null ? String.Empty : value.Trim(); CurRecord.PartnerInn = inn; break; case 15: String kpp = value == null ? String.Empty : value.Trim(); CurRecord.PartnerKpp = value; break; case 16: CurRecord.PartnerName = value; break; case 17: CurRecord.PartnerCountry = value; break; case 18: CurRecord.PartnerSity = value; break; case 19: CurRecord.PartnerAddress = value; break; case 20: value_double = Double.Parse(value, FormatProvider); value_decimal = Decimal.Round(new Decimal(value_double), 2); CurRecord.SummAll = value_decimal; break; case 21: value_double = Double.Parse(value, FormatProvider); value_decimal = Decimal.Round(new Decimal(value_double), 2); CurRecord.SummCost = value_decimal; break; case 22: value_double = Double.Parse(value, FormatProvider); value_decimal = Decimal.Round(new Decimal(value_double), 2); CurRecord.SummVAT = value_decimal; break; case 23: value_double = Double.Parse(value, FormatProvider); value_decimal = Decimal.Round(new Decimal(value_double), 2); CurRecord.SummIncCost = value_decimal; break; case 24: value_double = Double.Parse(value, FormatProvider); value_decimal = Decimal.Round(new Decimal(value_double), 2); CurRecord.SummIncVAT = value_decimal; break; case 25: value_double = Double.Parse(value, FormatProvider); value_decimal = Decimal.Round(new Decimal(value_double), 2); CurRecord.SummDecCost = value_decimal; break; case 26: value_double = Double.Parse(value, FormatProvider); value_decimal = Decimal.Round(new Decimal(value_double), 2); CurRecord.SummDecVAT = value_decimal; break; case 27: CurRecord.BayDate = DateTime.Parse(value, FormatProvider); break; case 28: switch (value) { case "3": CurRecord.BayVATRate = _VatRates.FirstOrDefault(x => x.Code == "10%"); break; case "4": CurRecord.BayVATRate = _VatRates.FirstOrDefault(x => x.Code == "0%"); break; case "5": CurRecord.BayVATRate = _VatRates.FirstOrDefault(x => x.Code == "БЕЗ НДС"); break; default: CurRecord.BayVATRate = _VatRates.FirstOrDefault(x => x.Code == "18%"); break; } break; case 29: value_double = Double.Parse(value, FormatProvider); value_decimal = Decimal.Round(new Decimal(value_double), 2); CurRecord.BaySummAll = value_decimal; break; case 30: CurRecord.BayAccCode = value; break; case 31: value_double = Double.Parse(value, FormatProvider); value_decimal = Decimal.Round(new Decimal(value_double), 2); CurRecord.BaySummVAT = value_decimal; break; case 32: CurRecord.SaleDate = DateTime.Parse(value, FormatProvider); break; case 33: // CurRecord.SaleVATRate = null; switch (value) { case "3": CurRecord.SaleVATRate = _VatRates.FirstOrDefault(x => x.Code == "10%"); break; case "4": CurRecord.SaleVATRate = _VatRates.FirstOrDefault(x => x.Code == "0%"); break; default: CurRecord.SaleVATRate = _VatRates.FirstOrDefault(x => x.Code == "18%"); break; } break; case 34: value_double = Double.Parse(value, FormatProvider); value_decimal = Decimal.Round(new Decimal(value_double), 2); CurRecord.SaleSummAll = value_decimal; break; case 35: CurRecord.SaleAccCode = value; break; case 36: value_double = Double.Parse(value, FormatProvider); value_decimal = Decimal.Round(new Decimal(value_double), 2); CurRecord.SaleSummVAT = value_decimal; break; } } catch (FormatException e) { throw new FormatException(String.Format("Лист: {0}, Строка: {1}, Колонка: {2}, Значение '{3}'", sheet, row, column, value), e); } }
private void ProcessRecord(fmCAVTBookBuhStruct struct_book, IObjectSpace os, fmCAVTBookBuhStructRecord record, InvoiceType invoice_type) { crmCParty party; if (String.IsNullOrEmpty(record.PartnerInn)) { throw new InvalidDataException("Незаполнен ИНН Рег: " + record.InvoiceRegNumber); } // crmCLegalPerson leg_person; // crmCLegalPersonUnit legunit_person; // person = os.GetObjects<crmCPerson>(new BinaryOperator("INN", record.PartnerInn)).FirstOrDefault(); if (invoice_type == InvoiceType.InvoiceOut && record.SaleDate < new DateTime(1990, 01, 01) && record.SaleSummVAT != 0) { record.SaleDate = record.TransferDate; } if (record.PartnerParty == null) { if (record.InvoiceType == "ГТД") { party = os.GetObjects <crmCParty>(new BinaryOperator("Code", record.PartnerInn)).FirstOrDefault(); } else if (record.PartnerInn == "-") { if (record.InvoiceType == "СФЗ" || record.PartnerName.Trim().ToUpper() == "НАСЕЛЕНИЕ") { party = os.GetObjects <crmCParty>(new BinaryOperator("Code", "2706")).FirstOrDefault(); // record.InvoiceType = "СФЗ"; } else { String[] fio = record.PartnerName.Split(' '); if (fio.Length != 3) { throw new InvalidDataException("Незаполнен ФИО физического лица '" + fio + "' Рег: " + record.InvoiceRegNumber); } crmCPhysicalParty person = os.GetObjects <crmCPhysicalParty>( new BinaryOperator("LastName", fio[0]) & new BinaryOperator("FirstName", fio[1]) & new BinaryOperator("MiddleName", fio[2]) , true).FirstOrDefault(); if (person == null) { person = os.CreateObject <crmCPhysicalParty>(); person.INN = "-"; person.Name = record.PartnerName; person.NameHandmake = record.PartnerName; person.LastName = fio[0]; person.FirstName = fio[1]; person.MiddleName = fio[2]; person.AddressLegal.City = record.PartnerSity; person.AddressLegal.AddressHandmake = "РФ " + record.PartnerSity + " " + record.PartnerAddress; // person.AddressFact.City = record.PartnerSity; // person.AddressFact.AddressHandmake = "РФ " + record.PartnerSity + " " + record.PartnerAddress; // party = person.Party; } party = person.Party; } } else { if (String.IsNullOrEmpty(record.PartnerKpp) || record.PartnerKpp == "-") { if (record.PartnerInn.Length != 12) { throw new FormatException("Некорректная длина ИНН Рег: " + record.InvoiceRegNumber); } crmCBusinessman person = os.GetObjects <crmCBusinessman>(new BinaryOperator("INN", record.PartnerInn), true).FirstOrDefault(); // phys_person = if (person == null) { person = os.CreateObject <crmCBusinessman>(); person.INN = record.PartnerInn; String[] name_comps = record.PartnerName.Split(' '); if (name_comps.Length >= 2) { person.LastName = name_comps[1]; } else { person.LastName = "-"; } if (name_comps.Length >= 3) { person.FirstName = name_comps[2]; } else { person.FirstName = "-"; } if (name_comps.Length == 4) { person.MiddleName = name_comps[3]; } else { person.MiddleName = "-"; } person.Name = record.PartnerName; person.NameHandmake = record.PartnerName; person.AddressLegal.City = record.PartnerSity; person.AddressLegal.AddressHandmake = "РФ " + record.PartnerSity + " " + record.PartnerAddress; person.AddressFact.City = record.PartnerSity; person.AddressFact.AddressHandmake = "РФ " + record.PartnerSity + " " + record.PartnerAddress; } party = person.Party; } else { if (record.PartnerInn.Length != 10) { throw new FormatException("Некорректная длина ИНН Рег: " + record.InvoiceRegNumber); } if (record.PartnerKpp.Length != 9) { throw new FormatException("Некорректная длина КПП Рег: " + record.InvoiceRegNumber); } party = os.GetObjects <crmCParty>(new BinaryOperator("INN", record.PartnerInn) & new BinaryOperator("KPP", record.PartnerKpp), true).FirstOrDefault(); if (party == null) { crmCLegalPerson person; person = os.GetObjects <crmCLegalPerson>(new BinaryOperator("INN", record.PartnerInn), true).FirstOrDefault(); if (person == null) { person = os.CreateObject <crmCLegalPerson>(); person.INN = record.PartnerInn; person.KPP = record.PartnerKpp; person.Name = record.PartnerName; person.AddressLegal.City = record.PartnerSity; person.AddressLegal.AddressHandmake = "РФ " + record.PartnerSity + " " + record.PartnerAddress; person.AddressFact.City = record.PartnerSity; person.AddressFact.AddressHandmake = "РФ " + record.PartnerSity + " " + record.PartnerAddress; party = person.Party; } if (person.Party.KPP == record.PartnerKpp) { party = person.Party; } else { crmCLegalPersonUnit unit = person.LegalPersonUnits.FirstOrDefault(x => x.KPP == record.PartnerKpp); if (unit == null) { unit = os.CreateObject <crmCLegalPersonUnit>(); person.LegalPersonUnits.Add(unit); unit.KPP = record.PartnerKpp; unit.Name = record.PartnerName; unit.AddressFact.City = record.PartnerSity; unit.AddressFact.AddressHandmake = "РФ " + record.PartnerSity + " " + record.PartnerAddress; } party = unit.Party; } } } // person = os.GetObjects<crmCPerson>(new BinaryOperator("INN", record.PartnerInn)).FirstOrDefault() } record.PartnerParty = party; } if (record.InvoiceType == "СЧФ" || record.InvoiceType == "УПД" || record.InvoiceType == "СФА") { fmCAVTInvoiceBase invoice; if (invoice_type == InvoiceType.InvoiceOut) { invoice = os.FindObject <fmCAVTInvoiceBase>( CriteriaOperator.And(new BinaryOperator("RegNumber", record.InvoiceRegNumber), new BinaryOperator("Date", record.InvoiceDate.Date, BinaryOperatorType.GreaterOrEqual), new BinaryOperator("Date", record.InvoiceDate.Date.AddDays(1), BinaryOperatorType.Less), new BinaryOperator("Supplier", struct_book.Party) // new BinaryOperator("Customer", record.PartnerParty) ), true ); if (invoice == null) { invoice = os.CreateObject <fmCAVTInvoiceBase>(); invoice.RegNumber = record.InvoiceRegNumber; invoice.Number = record.InvoiceNumber; invoice.Date = record.InvoiceDate; invoice.Supplier = struct_book.Party; invoice.Customer = record.PartnerParty; } if (invoice != null) { if (invoice.Customer != record.PartnerParty || invoice.Supplier != struct_book.Party) { throw new InvalidDataException("Счет фактура с регистрационным номером " + record.InvoiceRegNumber + " уже зарегистрирован с другим партнером " + invoice.Customer.Name); } if (invoice.InvoiceType == null && invoice.Number != null && invoice.Number.Length > 0) { foreach (fmCAVTInvoiceType inv_type in _InvoiceTypes) { if (inv_type.InvoiceDirection == fmAVTInvoiceDirection.AVTInvoiceOut && inv_type.Prefix == invoice.Number.Substring(0, 1)) { invoice.InvoiceType = inv_type; } } } invoice.SummCost = record.SummCost; invoice.SummAVT = record.SummVAT; record.Invoice = invoice; } } if (invoice_type == InvoiceType.InvoiceIn) { invoice = os.FindObject <fmCAVTInvoiceBase>( CriteriaOperator.And(new BinaryOperator("RegNumber", record.InvoiceRegNumber), new BinaryOperator("Date", record.InvoiceDate.Date, BinaryOperatorType.GreaterOrEqual), new BinaryOperator("Date", record.InvoiceDate.Date.AddDays(1), BinaryOperatorType.Less), // new BinaryOperator("Supplier", record.PartnerParty), new BinaryOperator("Customer", struct_book.Party) ), true ); if (invoice == null) { invoice = os.CreateObject <fmCAVTInvoiceBase>(); invoice.RegNumber = record.InvoiceRegNumber; invoice.Number = record.InvoiceNumber; invoice.Date = record.InvoiceDate; invoice.Supplier = record.PartnerParty; invoice.Customer = struct_book.Party; } if (invoice != null) { if (invoice.Supplier != record.PartnerParty || invoice.Customer != struct_book.Party) { throw new InvalidDataException("Счет фактура с регистрационным номером " + record.InvoiceRegNumber + " уже зарегистрирован с другим партнером " + invoice.Supplier.Name); } invoice.SummCost = record.SummCost; invoice.SummAVT = record.SummVAT; record.Invoice = invoice; } } } }
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; } опер.СуммаСтоимость = опер.СуммаВсего - опер.СуммаНДСБаза; }
/// <summary> /// /// </summary> /// <param name="os"></param> /// <param name="строка"></param> /// <param name="invoice"></param> ///// <param name="sf_sfz_type"></param> //static public void ProcessLine(IObjectSpace os, Документ строка, fmCAVTInvoiceType sf_sfz_type) { static public void ОбновитьДокумент(IObjectSpace os, Документ строка, Основание.ТипИсточника источник, fmCAVTBookBuhStructRecord запись) { // !!!!!!!!!!!!!!!!!!!!!!!!!! // Выбраковываем СФ if (строка.ТипОснования == Основание.ТипОснования.Неопределен || строка.ТипЛица == ЛицоТип.НЕЗАДАН || String.IsNullOrEmpty(строка.ИННПродавца) || String.IsNullOrEmpty(строка.егНомер) && строка.ТипОснования != Основание.ТипОснования.СФЗ || String.IsNullOrEmpty(строка.Номер) || строка.Дата < new DateTime(2000, 1, 1) || строка.ТипЛица == ЛицоТип.ЮР_ЛИЦО && (строка.ИНН.Length != 10 || !Regex.IsMatch(строка.ИНН, _ИНН_ЮЛ_Рег) || строка.КПП.Length != 9 || !Regex.IsMatch(строка.КПП, _КПП_Рек)) || строка.ТипЛица == ЛицоТип.ПРЕДПРИНИМАТЕЛЬ && (строка.ИНН.Length != 12 || !Regex.IsMatch(строка.ИНН, _ИНН_ФЛ_Рег)) ) { return; } // !!!!!!!!!!!!!!!!!!!!!!!!!! Основание sf = os.FindObject <Основание>( new BinaryOperator("ИннПродавца", строка.ИННПродавца) & new BinaryOperator("Номер", строка.Номер) & new BinaryOperator("Дата", строка.Дата, BinaryOperatorType.GreaterOrEqual) & new BinaryOperator("Дата", строка.Дата.AddDays(1), BinaryOperatorType.Less), true); if (sf == null) { sf = os.CreateObject <Основание>(); sf.Налогоплательщик = строка.Контейнер.Налогоплательщик; sf.Подразделение = строка.Контейнер.Подразделение; sf.Источник = строка.ТипИсточника; sf.ИНН = строка.ИНН; sf.Номер = строка.Номер; sf.Дата = строка.Дата; sf.КПП = строка.КПП; // sf.Налогоплательщик = строка.Контейнер.Налогоплательщик; // sf.Подразделение = строка.Контейнер.Подразделение; } строка.Основание = sf; sf.Корректировка = Основание.ТипПодчиненности.ОСНОВНОЙ; // sf.Источник = ts; sf.Тип = строка.ТипОснования; sf.ЛицоТип = строка.ТипЛица; ОснованиеДокумент sfdoc = null; // String sfdoc_sver = invoice.SF_PRAV_NUMBER.Trim(); DateTime sfdoc_date; if (строка.НомерИсправления != 0) { sfdoc_date = строка.ДатаИсправления; } else { sfdoc_date = строка.Дата; } // DateTime sfdoc_date = default(DateTime); // DateTime.TryParseExact(invoice.SF_DATE.Trim(), "yyyyMMdd", null, System.Globalization.DateTimeStyles.None, out sfdoc_date); //Decimal summ_cost = Decimal.Parse(invoice.SUMM_COST.Trim().Replace('.', ',')); //Decimal summ_nds = Decimal.Parse(invoice.SUMM_NDS.Trim().Replace('.', ',')); //Decimal summ_sub_cost = Decimal.Parse(invoice.SUMM_SUB_COST.Trim().Replace('.', ',')); //Decimal summ_sub_nds = Decimal.Parse(invoice.SUMM_SUB_NDS.Trim().Replace('.', ',')); ////Decimal summ_cost = строка.СчетФактура.SummCost; ////Decimal summ_nds = строка.СчетФактура.SummAVT; ////Decimal summ_sub_cost = строка.СчетФактура.DeltaSummAllSub; ////Decimal summ_sub_nds = строка.СчетФактура.DeltaSummAVTSub; //if (sf.Источник == Основание.ТипИсточника.ИСХОДЯЩИЙ && // sf.Тип != Основание.ТипОснования.Неопределен && // sf.Тип != Основание.ТипОснования.СЧГ && // sf.Тип != Основание.ТипОснования.БЖД && // sf.Тип != Основание.ТипОснования.СФЗ) { // if (строка.СчетФактура != null) { // if (sfdoc_sver == "0" && !String.IsNullOrEmpty(строка.СчетФактура.Current.VersionNumber)) { // sfdoc_sver = строка.СчетФактура.Current.VersionNumber; // UInt16.TryParse(sfdoc_sver, out sfdoc_ver); // sfdoc_date = строка.СчетФактура.Current.VersionDate; // } // if (summ_cost == 0 && summ_nds == 0 && summ_sub_cost == 0 && summ_sub_nds == 0) { // summ_cost = строка.СчетФактура.SummAll - строка.СчетФактура.SummAVT; // summ_nds = строка.СчетФактура.SummAVT; // } // } //} foreach (ОснованиеДокумент doc in sf.Документы) { if (doc.НомерИсправления == строка.НомерИсправления) { sfdoc = doc; break; } } if (sfdoc == null) { sfdoc = os.CreateObject <ОснованиеДокумент>(); sf.Документы.Add(sfdoc); sfdoc.НомерИсправления = строка.НомерИсправления; if (sf.ДействующийДокумент.НомерИсправления < sfdoc.НомерИсправления) { sf.ДействующийДокумент = sfdoc; } } строка.ОснованиеДокумент = sfdoc; sfdoc.ДатаИсправления = sfdoc_date; sfdoc.егНомер = строка.егНомер; // if (sf.Тип == Основание.ТипОснования.СФЗ && String.IsNullOrEmpty(sfdoc.РегНомер)) { // Int32 IntNumber = fmCAVTInvoiceNumberGenerator.GenerateNumber(((ObjectSpace)os).Session, sf.ДействующийДокумент.CID, sf_sfz_type, sf.Дата, 0); // sfdoc.РегНомер = sf_sfz_type.Prefix + sf.Дата.ToString("yyyyMM").Substring(2, 4) + IntNumber.ToString("00000"); // строка.РегНомер = sfdoc.РегНомер; // } sfdoc.КодПартнера = строка.Контрагент.Code; sfdoc.НаименКонтрагента = строка.Контрагент.Name; sfdoc.СуммаВсего = запись.SummAll; sfdoc.СуммаНДС = запись.SummVAT; sfdoc.СуммаВсегоУвел = запись.SummIncCost + запись.SummIncVAT; sfdoc.СуммаНДСУвел = запись.SummIncVAT; // sfdoc.СуммаВсегоУвел = sfdoc.СуммаВсего + summ_sub_cost; // sfdoc.СуммаНДСУвел = sfdoc.СуммаНДС + summ_sub_nds; }
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, источник, запись); } }