Example #1
0
        /// <summary>
        /// 売上一覧ヘッダ登録処理(販社)
        /// </summary>
        /// <param name="context"></param>
        /// <param name="myCompanyCode">自社コード</param>
        /// <param name="yearMonth">請求年月(yyyymm)</param>
        /// <param name="salesCompanyCode">販社コード(M70_JIS)</param>
        /// <param name="code">取引先コード</param>
        /// <param name="eda">枝番</param>
        /// <param name="paymentDate">入金日</param>
        /// <param name="userId">ログインユーザID</param>
        private void setHeaderInfoHan(TRAC3Entities context, int myCompanyCode, int yearMonth, int salesCompanyCode,
                                      DateTime?targetStDate, DateTime?targetEdDate, int?code, int?eda, DateTime paymentDate, int userId)
        {
            int      cnt      = 1;
            TKS01010 tks01010 = new TKS01010();

            // ヘッダ情報取得(販社)
            S01_SEIHD urdata = tks01010.getHeaderInfoHan(context, myCompanyCode, yearMonth, salesCompanyCode, cnt, targetStDate, targetEdDate, paymentDate, userId, true);  // No.305 Mod

            // 都度請求の場合はヘッダデータを作成しない
            if (urdata == null)
            {
                return;
            }

            // 前月残高の再設定
            S06_URIHD befData = getLastChargeInfo(context, myCompanyCode, yearMonth, code, eda, cnt);

            urdata.前月残高 = befData == null ? 0 : befData.当月請求額;

            // 繰越金額、当月残高の再計算
            urdata.繰越残高  = urdata.前月残高 - urdata.入金額;
            urdata.当月請求額 = urdata.繰越残高 + urdata.売上額 + urdata.消費税;

            // ヘッダ情報の整形
            S06_URIHD s06data = ConvertToS06_URIHD_Entity(urdata);

            // ヘッダ情報登録
            S06_URIHD_Update(context, s06data);
        }
Example #2
0
        /// <summary>
        /// 都度請求締集計処理
        /// </summary>
        /// <param name="paramDic"></param>
        /// <param name="userId"></param>
        public void BillingAggregation(Dictionary <string, string> paramDic, int userId)
        {
            string companyCd, startDate, endDate;

            try
            {
                // 画面パラメータ展開
                companyCd = paramDic[PARAMS_NAME_COMPANY];
                startDate = paramDic[PARAMS_NAME_CREATE_DATE_START];
                endDate   = paramDic[PARAMS_NAME_CREATE_DATE_END];
            }
            catch (Exception e)
            {
                throw e;
            }

            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();

                using (DbTransaction tran = context.Connection.BeginTransaction(System.Data.IsolationLevel.Serializable))
                {
                    try
                    {
                        TKS01010 tok01010 = new TKS01010();

                        // パラメータ型変換
                        int iCompany = int.Parse(companyCd);
                        DateTime
                            tStartDate = DateTime.Parse(startDate),
                            tEndDate   = DateTime.Parse(endDate);

                        // 得意先取得
                        List <M01_TOK> tokList = getTargetTOK(context, iCompany);

                        foreach (M01_TOK tok in tokList)
                        {
                            DateTime targetDate = tStartDate;
                            while (targetDate <= tEndDate)
                            {
                                TKS01010.TKS01010_SearchMember mem = new TKS01010.TKS01010_SearchMember();
                                mem.ID      = string.Format("{0} - {1}", tok.取引先コード, tok.枝番);
                                mem.得意先コード  = tok.取引先コード;
                                mem.得意先枝番   = tok.枝番;
                                mem.得意先名    = tok.得意先名1;
                                mem.締日      = targetDate.Day;
                                mem.区分      = string.Empty;
                                mem.開始日付1   = targetDate;
                                mem.終了日付1   = targetDate;
                                mem.開始日付2   = null;
                                mem.終了日付2   = null;
                                mem.開始日付3   = null;
                                mem.終了日付3   = null;
                                mem.クリア開始日付 = targetDate;
                                mem.クリア終了日付 = targetDate;
                                mem.入金日     = targetDate;

                                // 締集計の処理に投げる
                                tok01010.getAggregateData(context, iCompany, targetDate.Year * 100 + targetDate.Month, mem, 1, userId);

                                targetDate = targetDate.AddDays(1);
                            } // -- end loop date
                        }     // -- end loop tok

                        context.SaveChanges();

                        tran.Commit();
                    }
                    catch (Exception ex)
                    {
                        tran.Rollback();
                        throw ex;
                    }
                }
            }
        }
Example #3
0
        /// <summary>
        /// 調整計算確定処理をおこなう
        /// </summary>
        /// <param name="paramDic">パラメータDic</param>
        /// <param name="userId">ログインユーザID</param>
        public void SetConfirm(Dictionary <string, string> paramDic, int userId)
        {
            int compCd   = int.Parse(paramDic[PARAM_NAME_COMPANY]),
                year     = int.Parse(paramDic[PARAM_NAME_YEAR].Replace("/", ""));
            decimal rate = decimal.Parse(paramDic[PARAM_NAME_RATE]);

            using (TRAC3Entities context = new TRAC3Entities(CommonData.TRAC3_GetConnectionString()))
            {
                context.Connection.Open();

                using (var tran = context.Connection.BeginTransaction(System.Data.IsolationLevel.Serializable))
                {
                    try
                    {
                        // 取引先情報取得
                        var hanData =
                            context.M70_JIS
                            .Where(w => w.削除日時 == null && w.自社コード == compCd)
                            .Join(context.M01_TOK,
                                  x => new { code = x.取引先コード ?? 0, eda = x.枝番 ?? 0 },
                                  y => new { code = y.取引先コード, eda = y.枝番 },
                                  (x, y) => new { JIS = x, TOK = y })
                            .FirstOrDefault();

                        // 決算月・請求締日から売上集計期間を算出する
                        int pMonth = hanData.JIS.決算月 ?? CommonConstants.DEFAULT_SETTLEMENT_MONTH,
                            pYear  = pMonth < 4 ? year + 1 : year;

                        DateTime lastMonth   = new DateTime(pYear, pMonth, 1);
                        DateTime targetMonth = lastMonth.AddMonths(-11);

                        while (targetMonth <= lastMonth)
                        {
                            // 開始日は前月締日を設定
                            // No.101-3 Mod Start
                            DateTime calcStartDate =
                                AppCommon.GetClosingDate(targetMonth.AddMonths(-1).Year, targetMonth.AddMonths(-1).Month, hanData.TOK.T締日 ?? CommonConstants.DEFAULT_CLOSING_DAY);
                            // 終了日は当月締日の前日を設定
                            DateTime calcEndDate =
                                AppCommon.GetClosingDate(targetMonth.Year, targetMonth.Month, hanData.TOK.T締日 ?? CommonConstants.DEFAULT_CLOSING_DAY).AddDays(-1);
                            // No.101-3 Mod End

                            var hdList =
                                context.T02_URHD_HAN
                                .Where(v => v.削除日時 == null &&
                                       v.販社コード == compCd &&
                                       v.売上日 >= calcStartDate && v.売上日 <= calcEndDate);

                            foreach (var hdRow in hdList)
                            {
                                // 売上ヘッダ情報更新
                                hdRow.消費税    = hdRow.調整消費税 ?? 0;
                                hdRow.最終更新者  = userId;
                                hdRow.最終更新日時 = com.GetDbDateTime();

                                hdRow.AcceptChanges();

                                // 仕入情報が存在するか
                                var srhd =
                                    context.T03_SRHD_HAN.Where(w => w.削除日時 == null && w.伝票番号 == hdRow.伝票番号)
                                    .FirstOrDefault();

                                if (srhd != null)
                                {
                                    // 仕入がある場合は値を更新する
                                    srhd.消費税    = hdRow.調整消費税;
                                    srhd.最終更新者  = userId;
                                    srhd.最終更新日時 = com.GetDbDateTime();

                                    srhd.AcceptChanges();
                                }


                                // 売上明細情報更新
                                foreach (var dtlRow in context.T02_URDTL_HAN.Where(w => w.削除日時 == null && w.伝票番号 == hdRow.伝票番号))
                                {
                                    dtlRow.単価     = dtlRow.調整単価 ?? 0;
                                    dtlRow.金額     = dtlRow.調整金額;
                                    dtlRow.最終更新者  = userId;
                                    dtlRow.最終更新日時 = com.GetDbDateTime();

                                    dtlRow.AcceptChanges();

                                    if (srhd != null)
                                    {
                                        // 仕入があれば対象の仕入明細の値を更新する
                                        var srdtl =
                                            context.T03_SRDTL_HAN.Where(w => w.伝票番号 == dtlRow.伝票番号 && w.行番号 == dtlRow.行番号)
                                            .FirstOrDefault();

                                        if (srdtl == null)
                                        {
                                            continue;
                                        }

                                        srdtl.単価     = dtlRow.調整単価 ?? 0;
                                        srdtl.金額     = dtlRow.調整金額 ?? 0;
                                        srdtl.最終更新者  = userId;
                                        srdtl.最終更新日時 = com.GetDbDateTime();

                                        srdtl.AcceptChanges();
                                    }
                                }
                            }

                            // データ更新後に締集計をおこなう
                            TKS01010 clampService = new TKS01010();
                            // 集計処理に必要なデータを作成
                            var jis =
                                context.M70_JIS.Where(w =>
                                                      w.削除日時 == null && w.自社区分 == (int)CommonConstants.自社区分.自社)
                                .First();

                            TKS01010.TKS01010_SearchMember srcMem = new TKS01010.TKS01010_SearchMember();
                            srcMem.ID     = string.Format("{0:D3} - {1:D2}", hanData.TOK.取引先コード, hanData.TOK.枝番);
                            srcMem.得意先コード = hanData.TOK.取引先コード;
                            srcMem.得意先枝番  = hanData.TOK.枝番;
                            srcMem.得意先名   = hanData.TOK.得意先名1;
                            // No.101-3 Mod Start
                            srcMem.締日 = hanData.TOK.T締日 ?? CommonConstants.DEFAULT_CLOSING_DAY;
                            // No.101-3 Mod End
                            srcMem.開始日付1 = calcStartDate;
                            srcMem.終了日付1 = calcEndDate;
                            // No.101-3 Mod Start
                            srcMem.入金日 =
                                AppCommon.GetClosingDate(targetMonth.Year, targetMonth.Month, hanData.TOK.T入金日1 ?? CommonConstants.DEFAULT_CLOSING_DAY, hanData.TOK.Tサイト1 ?? 0);    // No-169 Mod
                            // No.101-3 Mod End

                            List <TKS01010.TKS01010_SearchMember> list = new List <TKS01010.TKS01010_SearchMember>();
                            list.Add(srcMem);
                            DataTable dt = KESSVCEntry.ConvertListToDataTable(list);
                            DataSet   ds = new DataSet();
                            ds.Tables.Add(dt);

                            // 集計実行
                            clampService.BillingAggregation(ds, jis.自社コード, targetMonth.Year * 100 + targetMonth.Month, userId);


                            // 次データの為に各値をカウントアップ
                            targetMonth = targetMonth.AddMonths(1);
                        }


                        // 変更状態を確定
                        context.SaveChanges();

                        // トランザクションコミット
                        tran.Commit();
                    }
                    catch (Exception ex)
                    {
                        // トランザクションロールバック
                        tran.Rollback();
                        throw ex;
                    }
                }// end transaction
            }
        }