Ejemplo n.º 1
0
        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, источник, запись);
            }
        }
Ejemplo n.º 2
0
 public static void Обновить(IObjectSpace os, ОперацияКонтИмпортСтруктур конт)
 {
     os.Delete(конт.Операции);
     foreach (var запись in конт.ДанныеСтруктур.InInvoiceRecords)
     {
         Обновить(os, конт, Основание.ТипИсточника.ВХОДЯЩИЙ, запись);
     }
     foreach (var запись in конт.ДанныеСтруктур.OutInvoiceRecords)
     {
         Обновить(os, конт, Основание.ТипИсточника.ИСХОДЯЩИЙ, запись);
     }
     //        public static void Обновить(IObjectSpace os, XPCollection<fmCAVTBookBuhStructRecord> записи) {
 }
Ejemplo n.º 3
0
        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();
            }
        }
Ejemplo n.º 4
0
        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);
                опер.СуммаНДСВычет     = опер.СуммаНДСВычет - опер.СуммаНДССтоимость;
            }
        }
Ejemplo n.º 5
0
        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;
            }
            опер.СуммаСтоимость = опер.СуммаВсего - опер.СуммаНДСБаза;
        }