Ejemplo n.º 1
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);
                опер.СуммаНДСВычет     = опер.СуммаНДСВычет - опер.СуммаНДССтоимость;
            }
        }
        private void Import(IObjectSpace os, ОперацияКонтРучные конт, String file_name)
        {
            FixedFileEngine engine = new FixedFileEngine(typeof(OperationImport));

            OperationImport[] imp_res = (OperationImport[])engine.ReadFile(file_name);
            os.Delete(конт.Операции);
            DateTime date = default(DateTime);

            foreach (OperationImport oper_imp in imp_res)
            {
                ОснованиеДокумент doc = null;
                if (oper_imp.SF_TYPE.Trim() != "СФЗ")
                {
                    doc = os.FindObject <ОснованиеДокумент>(new BinaryOperator("РегНомер", oper_imp.SF_REGNUM.Trim()), true);
                }
                else
                {
                    DateTime.TryParseExact(oper_imp.SF_DATE.Trim(), "yyyyMMdd", null, System.Globalization.DateTimeStyles.None, out date);
                    Основание осн = os.FindObject <Основание>(
                        new BinaryOperator("ИннПродавца", "5012039795") &
                        new BinaryOperator("Номер", oper_imp.SF_NUMBER.Trim()) &
                        new BinaryOperator("Дата", date, BinaryOperatorType.GreaterOrEqual) &
                        new BinaryOperator("Дата", date.AddDays(1), BinaryOperatorType.Less), true);
                    doc = осн != null ? осн.ДействующийДокумент : null;
                }
                Операция oper = os.CreateObject <Операция>();
                конт.Операции.Add(oper);
//                Decimal summ_cost = Decimal.Parse(imp_rec.SUMM_COST.Trim().Replace('.', ','));
//                DateTime.TryParseExact(imp_rec.SF_DATE.Trim(), "yyyyMMdd", null, System.Globalization.DateTimeStyles.None, out sfdoc_date);
                oper.ТипКниги        = (Операция.ТипКнигиТип)Int32.Parse(oper_imp.BOOK.Trim());
                oper.ТипДеятельности = (Операция.ТипДеятельностиТип)Int32.Parse(oper_imp.WORK_TYPE.Trim());
                oper.ТипНапрОпер     = (Операция.ТипНапрОперТип)Int32.Parse(oper_imp.DIR.Trim());
                oper.ТипОперВнутр    = (Операция.ТипОперВнутрТип)Int32.Parse(oper_imp.OPERATION.Trim());
                String stavka = oper_imp.VAT_RATE.Trim();
                if (String.IsNullOrEmpty(stavka) || stavka == "0")
                {
                    stavka = "2";
                }
                oper.Ставка = (СтавкаНДС)Int32.Parse(stavka);
                //                oper_imp.VAT_MODE;
                oper.Проводка   = oper_imp.BUH_PROV.Trim();
                oper.СубсчетНДС = oper_imp.VAT_ACC.Trim();
                DateTime.TryParseExact(oper_imp.BUH_DT.Trim(), "yyyyMMdd", null, System.Globalization.DateTimeStyles.None, out date);
                oper.ДатаБУ = date;
                DateTime.TryParseExact(oper_imp.VAT_DT.Trim(), "yyyyMMdd", null, System.Globalization.DateTimeStyles.None, out date);
                oper.ДатаНДС           = date;
                oper.ОснованиеДокумент = doc;
                oper.КодПартнера       = oper_imp.VO_CODE.Trim();
                if (oper_imp.SF_TYPE.Trim() != "СФЗ")
                {
                    oper.ОснованиеРегНомер = oper_imp.SF_REGNUM.Trim();
                }
                else
                {
                    oper.ОснованиеРегНомер = doc != null ? doc.егНомер : null;
                }
                oper.СФТип     = oper_imp.SF_TYPE.Trim();
                oper.СФТипОриг = oper_imp.SF_TYPE_ORIG.Trim();
                oper.СФНомер   = oper_imp.SF_NUMBER.Trim();
                DateTime.TryParseExact(oper_imp.SF_DATE.Trim(), "yyyyMMdd", null, System.Globalization.DateTimeStyles.None, out date);
                oper.СФДата  = date;
                oper.ПДТип   = oper_imp.PD_TYPE.Trim();
                oper.ПДНомер = oper_imp.PD_NUMBER.Trim();
                DateTime.TryParseExact(oper_imp.PD_DATE.Trim(), "yyyyMMdd", null, System.Globalization.DateTimeStyles.None, out date);
                oper.ПДДата             = date;
                oper.СуммаВсего         = Decimal.Parse(oper_imp.SUMM_ALL.Trim().Replace('.', ','));
                oper.СуммаСтоимость     = Decimal.Parse(oper_imp.SUMM_COST.Trim().Replace('.', ','));
                oper.СуммаНДСБаза       = Decimal.Parse(oper_imp.SUMM_VAT_PAY.Trim().Replace('.', ','));
                oper.СуммаНДСВычет      = Decimal.Parse(oper_imp.SUMM_VAT_BAY.Trim().Replace('.', ','));
                oper.СуммаНДССтоимость  = Decimal.Parse(oper_imp.SUMM_VAT_COST.Trim().Replace('.', ','));
                oper.СуммаНДС19Входящий = Decimal.Parse(oper_imp.SUMM_VAT_IN.Trim().Replace('.', ','));
                oper.СуммаНДС19Списано  = Decimal.Parse(oper_imp.SUMM_VAT_IN_USE.Trim().Replace('.', ','));
                if (oper.ТипКниги == Операция.ТипКнигиТип.ПРОДАЖ)
                {
                    if (oper.СФТип != "СФВ")
                    {
                        oper.СуммаСтоимость  = oper.СуммаВсего;
                        oper.СуммаСтоимость += -oper.СуммаНДСБаза;
                    }
                    else
                    {
                        oper.СуммаСтоимость = Decimal.Round(oper.СуммаНДСБаза * 100 / 18, 2);
                        oper.СуммаВсего     = oper.СуммаСтоимость + oper.СуммаНДСБаза;
                    }
                }
                //oper_imp.SUMM_ALL;
                //oper_imp.SUMM_COST;
                //oper_imp.SUMM_VAT_PAY;
                //oper_imp.SUMM_VAT_IN;
                //oper_imp.SUMM_VAT_IN_USE;
                //oper_imp.SUMM_VAT_COST;
                //oper_imp.SUMM_VAT_BAY;
                //System.Console.WriteLine(oper_import.SUMM_ALL + "_" + oper_import.SUMM_VAT_PAY + "_" + oper_import.SUMM_VAT_BAY);
            }
        }
Ejemplo n.º 3
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;
            }
            опер.СуммаСтоимость = опер.СуммаВсего - опер.СуммаНДСБаза;
        }