Example #1
0
        public cea_tb OfGetCeaModel(string pCea01)
        {
            DataRow drCea    = null;
            cea_tb  rtnModel = null;

            try
            {
                drCea = OfGetCeaDr(pCea01);
                if (drCea == null)
                {
                    return(null);
                }
                rtnModel = drCea.ToItem <cea_tb>();

                return(rtnModel);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #2
0
        public List <Result> OfUndoGenVoucher(vw_carb351 pModel, string pSecurityString, UserInfo pLoginInfo)
        {
            List <Result>       rtnResultList = null;
            string              selectSql = "";
            string              updateGea = "", updateCea = "", updateCfa = "";
            string              deleteGfa = "", deleteGfb = "";
            string              strQueryRange = "", strQuerySingle = "";
            List <SqlParameter> sqlParmList = null;
            DataTable           dtGfa       = null;
            List <QueryInfo>    queryInfoList;
            QueryInfo           queryModel;
            cea_tb              ceaModel = null;
            gfa_tb              gfaModel = null;
            DataRow             drGea    = null;
            int    chkCnts = 0;
            string cac04   = "";

            try
            {
                _loginInfo = pLoginInfo;

                selectSql = @"
                            SELECT * FROM gfa_tb
                            WHERE gfa06='AR' AND gfaconf='N'
                        ";
                updateCea = @"UPDATE cea_tb 
                            SET cea29=NULL
                            WHERE cea29=@gfa01
                            ";
                updateCfa = @"UPDATE cfa_tb 
                            SET cfa12=NULL
                            WHERE cfa12=@gfa01
                            ";
                updateGea = @"UPDATE gea_tb 
                            SET gea06=NULL,
                                gea07=NULL
                            WHERE gea06=@gfa01
                            ";
                deleteGfa = @"DELETE FROM gfa_tb WHERE gfa01=@gfa01 ";
                deleteGfb = @"DELETE FROM gfb_tb WHERE gfb01=@gfb01 ";

                sqlParmList   = new List <SqlParameter>();
                queryInfoList = new List <QueryInfo>();

                #region range 處理
                if (!GlobalFn.varIsNull(pModel.gfa01))
                {
                    queryModel            = new QueryInfo();
                    queryModel.TableName  = "gfa_tb";
                    queryModel.ColumnName = "gfa01";
                    queryModel.ColumnType = "string";
                    queryModel.Value      = pModel.gfa01;
                    queryInfoList.Add(queryModel);
                }

                sqlParmList   = new List <SqlParameter>();
                strQueryRange = WfGetQueryString(queryInfoList, out sqlParmList);
                #endregion

                #region single處理
                if (!GlobalFn.varIsNull(pModel.gfa02_s))
                {
                    sqlParmList.Add(new SqlParameter("@gfa02_s", pModel.gfa02_s));
                    strQuerySingle += string.Format(" AND gfa02>=@gfa02_s");
                }
                if (!GlobalFn.varIsNull(pModel.gfa02_e))
                {
                    sqlParmList.Add(new SqlParameter("@gfa02_e", pModel.gfa02_e));
                    strQuerySingle += string.Format(" AND gfa02<=@gfa02_e");
                }
                #endregion

                selectSql = string.Concat(selectSql, strQueryRange, strQuerySingle, pSecurityString);       //加入權限處理
                dtGfa     = OfGetDataTable(selectSql, sqlParmList.ToArray());
                if (dtGfa == null || dtGfa.Rows.Count == 0)
                {
                    return(null);
                }

                rtnResultList = new List <Result>();
                foreach (DataRow drGfa in dtGfa.Rows)
                {
                    gfaModel = drGfa.ToItem <gfa_tb>();
                    var result = new Result();
                    rtnResultList.Add(result);

                    //更新應收帳款或是收款沖帳
                    sqlParmList = new List <SqlParameter>();
                    sqlParmList.Add(new SqlParameter("@gfa01", gfaModel.gfa01));
                    chkCnts = OfExecuteNonquery(updateCea, sqlParmList.ToArray());
                    if (chkCnts < 0)
                    {
                        result.Key1    = gfaModel.gfa01;
                        result.Message = "更新應收帳款失敗!";
                        continue;
                    }
                    else if (chkCnts == 0)    //更新收款單
                    {
                        sqlParmList = new List <SqlParameter>();
                        sqlParmList.Add(new SqlParameter("@gfa01", gfaModel.gfa01));
                        chkCnts = OfExecuteNonquery(updateCfa, sqlParmList.ToArray());
                        if (chkCnts == 0)
                        {
                            result.Key1    = gfaModel.gfa01;
                            result.Message = "查無收款單可更新!";
                            continue;
                        }
                        else if (chkCnts <= 0)
                        {
                            result.Key1    = gfaModel.gfa01;
                            result.Message = "更新收款單失敗!";
                            continue;
                        }
                    }


                    //更新分錄底稿
                    sqlParmList = new List <SqlParameter>();
                    sqlParmList.Add(new SqlParameter("@gfa01", gfaModel.gfa01));
                    if (OfExecuteNonquery(updateGea, sqlParmList.ToArray()) < 0)
                    {
                        result.Key1    = gfaModel.gfa01;
                        result.Message = "更新分錄底稿失敗!";
                        continue;
                    }
                    //刪除傳票單身
                    sqlParmList = new List <SqlParameter>();
                    sqlParmList.Add(new SqlParameter("@gfb01", gfaModel.gfa01));
                    if (OfExecuteNonquery(deleteGfb, sqlParmList.ToArray()) < 0)
                    {
                        result.Key1    = gfaModel.gfa01;
                        result.Message = "刪除傳票單身失敗!";
                        continue;
                    }

                    //刪除傳票單頭
                    sqlParmList = new List <SqlParameter>();
                    sqlParmList.Add(new SqlParameter("@gfa01", gfaModel.gfa01));
                    if (OfExecuteNonquery(deleteGfa, sqlParmList.ToArray()) < 0)
                    {
                        result.Key1    = gfaModel.gfa01;
                        result.Message = "刪除傳票單頭失敗!";
                        continue;
                    }

                    result.Key1    = gfaModel.gfa01;
                    result.Success = true;
                }


                return(rtnResultList);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #3
0
        public List <Result> OfGenVoucher(vw_carb350 pModel, string pSecurityString, UserInfo pLoginInfo)
        {
            List <Result>       rtnResultList = null;
            Result              result = null;
            string              selectSql = "";
            string              strQueryRange = "", strQuerySingle = "";
            List <SqlParameter> sqlParmList = null;
            DataTable           dtSource    = null;
            List <QueryInfo>    queryInfoList;
            QueryInfo           queryModel;
            cea_tb              ceaModel = null;
            cfa_tb              cfaModel = null;
            gea_tb              geaModel = null;
            DataRow             drGea    = null;
            int chkCnts = 0;

            try
            {
                _loginInfo = pLoginInfo;

                //區分應收及收款處理
                rtnResultList = new List <Result>();
                if (pModel.gea03 == 0)
                {
                    result         = new Result();
                    result.Key1    = "";
                    result.Message = "類別未輸入!";
                    return(rtnResultList);
                }
                if (pModel.gea03 == 1)  //應收
                {
                    selectSql = @"
                            SELECT cea_tb.* FROM cea_tb
                                INNER JOIN gea_tb ON cea01=gea01 AND gea02='AR' AND gea03=1 AND gea04=1
                            WHERE ceaconf='Y' AND ISNULL(cea29,'')=''
                        ";
                }
                else
                {
                    selectSql = @"
                            SELECT cfa_tb.* FROM cfa_tb
                                INNER JOIN gea_tb ON cfa01=gea01 AND gea02='AR' AND gea03=2 AND gea04=1
                            WHERE cfaconf='Y' AND ISNULL(cfa12,'')=''
                        ";
                }

                sqlParmList   = new List <SqlParameter>();
                queryInfoList = new List <QueryInfo>();

                #region range 處理
                if (!GlobalFn.varIsNull(pModel.gea01))
                {
                    queryModel            = new QueryInfo();
                    queryModel.TableName  = "gea_tb";
                    queryModel.ColumnName = "gea01";
                    queryModel.ColumnType = "string";
                    queryModel.Value      = pModel.gfa01;
                    queryInfoList.Add(queryModel);
                }

                if (!GlobalFn.varIsNull(pModel.ceasecg))
                {
                    queryModel = new QueryInfo();
                    if (pModel.gea03 == 1)  //應收
                    {
                        queryModel.TableName  = "cea_tb";
                        queryModel.ColumnName = "ceasecg";
                    }
                    else
                    {
                        queryModel.TableName  = "cfa_tb";
                        queryModel.ColumnName = "cfasecg";
                    }
                    queryModel.ColumnType = "string";
                    queryModel.Value      = pModel.ceasecg;
                    queryInfoList.Add(queryModel);
                }

                sqlParmList   = new List <SqlParameter>();
                strQueryRange = WfGetQueryString(queryInfoList, out sqlParmList);
                #endregion

                #region single處理
                if (!GlobalFn.varIsNull(pModel.gea05_s))
                {
                    sqlParmList.Add(new SqlParameter("@gea05_s", pModel.gea05_s));
                    strQuerySingle += string.Format(" AND gea05>=@gea05_s");
                }
                if (!GlobalFn.varIsNull(pModel.gea05_e))
                {
                    sqlParmList.Add(new SqlParameter("@gea05_e", pModel.gea05_e));
                    strQuerySingle += string.Format(" AND gea05<=@gea05_e");
                }
                #endregion

                selectSql = string.Concat(selectSql, strQueryRange, strQuerySingle, pSecurityString);       //加入權限處理
                dtSource  = OfGetDataTable(selectSql, sqlParmList.ToArray());
                if (dtSource == null || dtSource.Rows.Count == 0)
                {
                    return(null);
                }

                foreach (DataRow drTemp in dtSource.Rows)
                {
                    result = new Result();
                    rtnResultList.Add(result);
                    if (pModel.gea03 == 1)  //應收
                    {
                        ceaModel    = drTemp.ToItem <cea_tb>();
                        sqlParmList = new List <SqlParameter>();
                        sqlParmList.Add(new SqlParameter("@gea01", ceaModel.cea01));
                        sqlParmList.Add(new SqlParameter("@gea03", pModel.gea03));
                    }
                    else
                    {
                        cfaModel    = drTemp.ToItem <cfa_tb>();
                        sqlParmList = new List <SqlParameter>();
                        sqlParmList.Add(new SqlParameter("@gea01", cfaModel.cfa01));
                        sqlParmList.Add(new SqlParameter("@gea03", pModel.gea03));
                    }

                    selectSql = @"SELECT * FROM gea_tb 
                                WHERE gea01=@gea01 AND gea02='AR'
                                    AND gea03=@gea03 AND gea04=1
                                ";

                    drGea = OfGetDataRow(selectSql, sqlParmList.ToArray());
                    if (drGea == null)
                    {
                        result.Message = "查無分錄底稿!";
                        continue;
                    }
                    geaModel    = drGea.ToItem <gea_tb>();
                    result.Key1 = geaModel.gea01;

                    if (geaModel.gea08 != geaModel.gea09)
                    {
                        result.Message = "借貸不平衡!";
                        continue;
                    }

                    if (pModel.gea03 == 1)  //應收
                    {
                        if (OfGenGfa(pModel, ceaModel, geaModel, result) == false)
                        {
                            continue;
                        }
                    }
                    else  //收款沖帳
                    {
                        if (OfGenGfa(pModel, cfaModel, geaModel, result) == false)
                        {
                            continue;
                        }
                    }

                    result.Success = true;
                }

                return(rtnResultList);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #4
0
        public List <Result> OfGenGeaByCea(string pCea01, UserInfo pLoginInfo)
        {
            List <Result>       rtnResultList = null;
            Result              result = null;
            cea_tb              ceaModel = null;
            List <ceb_tb>       cebList = null;
            string              sqlSelect = "";
            List <SqlParameter> sqlParmList = null;
            CarBLL              boCar = null;
            StpBLL              boStp = null;
            BasBLL              boBas = null;
            DataTable           dtGea = null, dtGeb = null;
            DataRow             drGea = null, drGeb = null;
            decimal             gea08 = 0, gea09 = 0;
            int    i;
            baa_tb baaModel = null;
            gba_tb gbaModel = null;
            cba_tb cbaModel = null;

            try
            {
                rtnResultList = new List <Result>();
                boBas         = new BasBLL(this.OfGetConntion());
                boBas.TRAN    = this.TRAN;
                boCar         = new CarBLL(this.OfGetConntion());
                boCar.TRAN    = this.TRAN;
                boStp         = new StpBLL(this.OfGetConntion());
                boStp.TRAN    = this.TRAN;

                baaModel = boBas.OfGetBaaModel();
                if (baaModel == null || GlobalFn.varIsNull(baaModel.baa04))
                {
                    result         = new Result();
                    result.Key1    = pCea01;
                    result.Message = "查無本國幣別!";
                    rtnResultList.Add(result);
                    return(rtnResultList);
                }

                ceaModel = boCar.OfGetCeaModel(pCea01);
                if (ceaModel == null)
                {
                    result         = new Result();
                    result.Key1    = pCea01;
                    result.Message = "查無此應收單號!";
                    rtnResultList.Add(result);
                    return(rtnResultList);
                }
                if (ceaModel.ceaconf != "N")
                {
                    result         = new Result();
                    result.Key1    = pCea01;
                    result.Message = "應收帳款非未確認狀態!";
                    rtnResultList.Add(result);
                    return(rtnResultList);
                }
                cbaModel = boCar.OfGetCbaModel(ceaModel.cea21);
                if (cbaModel == null)
                {
                    result         = new Result();
                    result.Key1    = pCea01;
                    result.Message = "查無應收科目類別資料!";
                    rtnResultList.Add(result);
                    return(rtnResultList);
                }
                if (GlobalFn.varIsNull(cbaModel.cba05))
                {
                    result         = new Result();
                    result.Key1    = pCea01;
                    result.Message = "查無銷項稅額科目!";
                    rtnResultList.Add(result);
                    return(rtnResultList);
                }

                cebList = boCar.OfGetCebList(pCea01);
                if (cebList == null || cebList.Count == 0)
                {
                    result         = new Result();
                    result.Key1    = pCea01;
                    result.Message = "應收帳款無單身資料!";
                    rtnResultList.Add(result);
                    return(rtnResultList);
                }
                //新增底稿單頭
                this.OfCreateDao("gea_tb", "*", "");
                sqlSelect      = "SELECT * FROM gea_tb WHERE 1<>1 ";
                dtGea          = this.OfGetDataTable(sqlSelect);
                drGea          = dtGea.NewRow();
                drGea["gea01"] = ceaModel.cea01;  //底稿單號
                drGea["gea02"] = "AR";            //系統別
                drGea["gea03"] = 1;               //1.應收 2.收款
                drGea["gea04"] = 1;               //AR 固定為1
                drGea["gea05"] = ceaModel.cea02;  //同帳款日期
                drGea["gea06"] = DBNull.Value;    //傳票號碼
                drGea["gea07"] = DBNull.Value;    //傳票日期
                drGea["gea08"] = ceaModel.cea15t; //借方金額
                var ceb09t_tot = cebList.Sum(p => p.ceb09t);
                drGea["gea09"]   = ceb09t_tot;    //貸方金額
                drGea["gea10"]   = DBNull.Value;  //保留
                drGea["gea11"]   = DBNull.Value;  //保留
                drGea["gea12"]   = DBNull.Value;  //保留
                drGea["geaprno"] = 0;
                drGea["geacomp"] = pLoginInfo.CompNo;
                drGea["geacreu"] = pLoginInfo.UserNo;
                drGea["geacreg"] = pLoginInfo.DeptNo;
                drGea["geacred"] = OfGetNow();
                drGea["geamodu"] = DBNull.Value;
                drGea["geamodg"] = DBNull.Value;
                drGea["geamodd"] = DBNull.Value;
                drGea["geasecu"] = pLoginInfo.UserNo;
                drGea["geasecg"] = pLoginInfo.GroupNo;
                dtGea.Rows.Add(drGea);
                if (this.OfUpdate(dtGea) == -1)
                {
                    result         = new Result();
                    result.Key1    = pCea01;
                    result.Message = "新增分錄底稿單頭失敗!";
                    rtnResultList.Add(result);
                    return(rtnResultList);
                }

                //新增底稿單身
                this.OfCreateDao("geb_tb", "*", "");
                sqlSelect = "SELECT * FROM geb_tb WHERE 1<>1 ";
                dtGeb     = this.OfGetDataTable(sqlSelect);

                //借方帶單頭應收帳款
                //用本幣匯總成一筆來加總
                drGeb          = dtGeb.NewRow();
                i              = 1;
                drGeb          = dtGeb.NewRow();
                drGeb["geb01"] = ceaModel.cea01;        //底稿單頭
                drGeb["geb02"] = "AR";
                drGeb["geb03"] = 1;                     //1.應收 2.收款
                drGeb["geb04"] = 1;                     //AR 固定為1
                drGeb["geb05"] = i;                     //項次
                drGeb["geb06"] = ceaModel.cea22;        //會計科目-待補入
                drGeb["geb07"] = "";                    //摘要
                drGeb["geb08"] = DBNull.Value;          //部門
                if (!GlobalFn.varIsNull(ceaModel.cea22))
                {
                    gbaModel = OfGetGbaModel(ceaModel.cea22);
                    if (gbaModel != null && gbaModel.gba09 == "Y")
                    {
                        drGeb["geb08"] = ceaModel.cea05;
                    }
                }
                drGeb["geb09"] = 1;                                  //借貸 1.借 2.貸
                drGeb["geb10"] = ceaModel.cea15t;                    //本幣金額(稅)
                //幣別均以本幣處理
                drGeb["geb11"]   = baaModel.baa04;                   //原幣幣別(帶入本幣幣別)
                drGeb["geb12"]   = ceaModel.cea12;                   //匯率
                drGeb["geb13"]   = ceaModel.cea15t;                  //原幣金額(稅)
                drGeb["geb14"]   = ceaModel.cea03;                   //客戶編號
                drGeb["geb15"]   = boStp.OfGetSca03(ceaModel.cea03); //客戶簡稱
                drGeb["geb16"]   = DBNull.Value;                     //保留
                drGeb["geb17"]   = DBNull.Value;                     //保留
                drGeb["geb18"]   = DBNull.Value;                     //保留
                drGeb["geb19"]   = DBNull.Value;                     //保留
                drGeb["geb20"]   = DBNull.Value;                     //保留
                drGeb["geb21"]   = DBNull.Value;                     //保留
                drGeb["gebcomp"] = pLoginInfo.CompNo;
                drGeb["gebcreu"] = pLoginInfo.UserNo;
                drGeb["gebcreg"] = pLoginInfo.DeptNo;
                drGeb["gebcred"] = OfGetNow();
                drGeb["gebmodu"] = DBNull.Value;
                drGeb["gebmodg"] = DBNull.Value;
                drGeb["gebmodd"] = DBNull.Value;
                dtGeb.Rows.Add(drGeb);

                //處理貸方未稅明細資料
                foreach (ceb_tb cebModel in cebList)
                {
                    i++;
                    drGeb          = dtGeb.NewRow();
                    drGeb["geb01"] = cebModel.ceb01;        //底稿單頭
                    drGeb["geb02"] = "AR";
                    drGeb["geb03"] = 1;                     //1.應收 2.收款
                    drGeb["geb04"] = 1;                     //AR 固定為1
                    drGeb["geb05"] = i;                     //項次
                    drGeb["geb06"] = cebModel.ceb10;        //會計科目
                    drGeb["geb07"] = "";                    //摘要
                    drGeb["geb08"] = DBNull.Value;          //部門
                    if (!GlobalFn.varIsNull(cebModel.ceb10))
                    {
                        gbaModel = OfGetGbaModel(cebModel.ceb10);
                        if (gbaModel != null && gbaModel.gba09 == "Y")
                        {
                            drGeb["geb08"] = ceaModel.cea05;
                        }
                    }
                    drGeb["geb09"]   = 2;                                //借貸 1.借 2.貸
                    drGeb["geb10"]   = cebModel.ceb09;                   //本幣金額(未稅)
                    drGeb["geb11"]   = ceaModel.cea10;                   //原幣幣別
                    drGeb["geb12"]   = ceaModel.cea12;                   //匯率
                    drGeb["geb13"]   = cebModel.ceb07;                   //原幣金額
                    drGeb["geb14"]   = ceaModel.cea03;                   //客戶編號
                    drGeb["geb15"]   = boStp.OfGetSca03(ceaModel.cea03); //客戶簡稱
                    drGeb["geb16"]   = DBNull.Value;                     //保留
                    drGeb["geb17"]   = DBNull.Value;                     //保留
                    drGeb["geb18"]   = DBNull.Value;                     //保留
                    drGeb["geb19"]   = DBNull.Value;                     //保留
                    drGeb["geb20"]   = DBNull.Value;                     //保留
                    drGeb["geb21"]   = DBNull.Value;                     //保留
                    drGeb["gebcomp"] = pLoginInfo.CompNo;
                    drGeb["gebcreu"] = pLoginInfo.UserNo;
                    drGeb["gebcreg"] = pLoginInfo.DeptNo;
                    drGeb["gebcred"] = OfGetNow();
                    drGeb["gebmodu"] = DBNull.Value;
                    drGeb["gebmodg"] = DBNull.Value;
                    drGeb["gebmodd"] = DBNull.Value;
                    dtGeb.Rows.Add(drGeb);
                }

                //貸方再補一筆稅額
                //用本幣匯總成一筆來加總
                drGeb = dtGeb.NewRow();
                i++;
                drGeb          = dtGeb.NewRow();
                drGeb["geb01"] = ceaModel.cea01;        //底稿單頭
                drGeb["geb02"] = "AR";
                drGeb["geb03"] = 1;                     //1.應收 2.收款
                drGeb["geb04"] = 1;                     //AR 固定為1
                drGeb["geb05"] = i;                     //項次



                drGeb["geb06"] = cbaModel.cba05;        //會計科目
                drGeb["geb07"] = "";                    //摘要
                drGeb["geb08"] = DBNull.Value;          //部門
                if (!GlobalFn.varIsNull(cbaModel.cba05))
                {
                    gbaModel = OfGetGbaModel(cbaModel.cba05);
                    if (gbaModel != null && gbaModel.gba09 == "Y")
                    {
                        drGeb["geb08"] = ceaModel.cea05;
                    }
                }
                drGeb["geb09"] = 2;                     //借貸 1.借 2.貸

                var taxTotal = cebList.Sum(x => x.ceb09t - x.ceb09);
                drGeb["geb10"] = taxTotal;                           //本幣金額(稅)
                //幣別均以本幣處理
                drGeb["geb11"]   = baaModel.baa04;                   //原幣幣別(帶入本幣幣別)
                drGeb["geb12"]   = ceaModel.cea12;                   //匯率
                drGeb["geb13"]   = taxTotal;                         //原幣金額(稅)
                drGeb["geb14"]   = ceaModel.cea03;                   //客戶編號
                drGeb["geb15"]   = boStp.OfGetSca03(ceaModel.cea03); //客戶簡稱
                drGeb["geb16"]   = DBNull.Value;                     //保留
                drGeb["geb17"]   = DBNull.Value;                     //保留
                drGeb["geb18"]   = DBNull.Value;                     //保留
                drGeb["geb19"]   = DBNull.Value;                     //保留
                drGeb["geb20"]   = DBNull.Value;                     //保留
                drGeb["geb21"]   = DBNull.Value;                     //保留
                drGeb["gebcomp"] = pLoginInfo.CompNo;
                drGeb["gebcreu"] = pLoginInfo.UserNo;
                drGeb["gebcreg"] = pLoginInfo.DeptNo;
                drGeb["gebcred"] = OfGetNow();
                drGeb["gebmodu"] = DBNull.Value;
                drGeb["gebmodg"] = DBNull.Value;
                drGeb["gebmodd"] = DBNull.Value;
                dtGeb.Rows.Add(drGeb);

                if (this.OfUpdate(dtGeb) == -1)
                {
                    result         = new Result();
                    result.Key1    = pCea01;
                    result.Message = "新增分錄底稿單身失敗!";
                    rtnResultList.Add(result);
                    return(rtnResultList);
                }

                return(rtnResultList);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #5
0
        /// <summary>
        /// 產生分錄底稿 來源為應收帳款
        /// </summary>
        /// <param name="pCarb350Model"></param>
        /// <param name="pCeaModel"></param>
        /// <param name="pGeaModel"></param>
        /// <param name="pResult"></param>
        /// <returns></returns>
        private bool OfGenGfa(vw_carb350 pCarb350Model, cea_tb pCeaModel, gea_tb pGeaModel, Result pResult)
        {
            string selectSql = "", updateSql = "";
            List <SqlParameter> sqlParmList = null;
            GlaBLL        boGla = null;
            BasBLL        boBas = null;
            DataTable     dtGfa = null, dtGfb = null;
            DataRow       drGfa = null, drGfb = null;
            string        gfa01 = "", gfa01New = "";
            DateTime?     gfa02;
            string        errMsg = "";
            int           year = 0, period = 0;
            List <geb_tb> gebList  = null;
            cac_tb        cacModel = null; //應收單別
            int           chkCnts  = 0;

            try
            {
                boGla      = new GlaBLL(OfGetConntion());
                boGla.TRAN = this.TRAN;
                boBas      = new BasBLL(OfGetConntion());
                boBas.TRAN = this.TRAN;

                boGla.OfCreateDao("gfa_tb", "*", "");
                selectSql = @"SELECT * FROM gfa_tb WHERE 1<>1";
                dtGfa     = boGla.OfGetDataTable(selectSql);
                drGfa     = dtGfa.NewRow();
                if (!GlobalFn.varIsNull(pCarb350Model.gfa01))
                {
                    gfa01 = pCarb350Model.gfa01;
                }
                else
                {
                    //以應收單別設定的來拋轉
                    cacModel = OfGetCacModel(pCeaModel.cea01);
                    if (cacModel == null)
                    {
                        pResult.Key1    = pCeaModel.cea01;
                        pResult.Message = "取得應收單別失敗!";
                        return(false);
                    }
                    if (GlobalFn.varIsNull(cacModel.cac10))
                    {
                        pResult.Key1    = pCeaModel.cea01;
                        pResult.Message = "未設定應收拋轉總帳單別,請先至單別資料設定!";
                        return(false);
                    }
                    gfa01 = cacModel.cac10;
                }
                if (!GlobalFn.varIsNull(pCarb350Model.gfa02))
                {
                    gfa02 = pCarb350Model.gfa02;
                }
                else
                {
                    gfa02 = pGeaModel.gea05;
                }

                errMsg = "";
                if (boBas.OfGetAutoNo(gfa01, ModuleType.gla, (DateTime)gfa02, out gfa01New, out errMsg) == false)
                {
                    pResult.Key1    = pCeaModel.cea01;
                    pResult.Message = errMsg;
                    return(false);
                }

                drGfa["gfa01"] = gfa01New;
                drGfa["gfa02"] = gfa02;
                drGfa["gfa03"] = pGeaModel.gea08;
                drGfa["gfa04"] = pGeaModel.gea09;
                drGfa["gfa05"] = "";              //備註
                drGfa["gfa06"] = pGeaModel.gea02; //來源碼-系統別
                drGfa["gfa07"] = pGeaModel.gea01; //來源單號

                if (boGla.OfGetGlaYearPeriod(Convert.ToDateTime(gfa02), out year, out period) == false)
                {
                    pResult.Message = "取得會計年度失敗!";
                    return(false);
                }
                drGfa["gfa08"]   = year;
                drGfa["gfa09"]   = period;
                drGfa["gfa10"]   = DBNull.Value;    //保留
                drGfa["gfa10"]   = DBNull.Value;    //保留
                drGfa["gfa11"]   = DBNull.Value;    //保留
                drGfa["gfa12"]   = DBNull.Value;    //保留
                drGfa["gfa13"]   = DBNull.Value;    //保留
                drGfa["gfa14"]   = DBNull.Value;    //保留
                drGfa["gfa15"]   = DBNull.Value;    //保留
                drGfa["gfa16"]   = DBNull.Value;    //保留
                drGfa["gfa17"]   = DBNull.Value;    //保留
                drGfa["gfa18"]   = DBNull.Value;    //保留
                drGfa["gfa19"]   = DBNull.Value;    //保留
                drGfa["gfa20"]   = DBNull.Value;    //保留
                drGfa["gfaprno"] = 0;
                drGfa["gfaconf"] = "N";
                drGfa["gfaconu"] = DBNull.Value;
                drGfa["gfapost"] = "N";
                drGfa["gfaposd"] = DBNull.Value;
                drGfa["gfaposu"] = DBNull.Value;
                drGfa["gfacomp"] = _loginInfo.CompNo;
                drGfa["gfacreu"] = _loginInfo.UserNo;
                drGfa["gfacreg"] = _loginInfo.DeptNo;
                drGfa["gfacred"] = OfGetNow();
                drGfa["gfamodu"] = DBNull.Value;
                drGfa["gfamodg"] = DBNull.Value;
                drGfa["gfamodd"] = DBNull.Value;
                drGfa["gfasecu"] = _loginInfo.UserNo;
                drGfa["gfasecg"] = _loginInfo.GroupNo;
                dtGfa.Rows.Add(drGfa);

                if (boGla.OfUpdate(dtGfa) == -1)
                {
                    pResult.Key1    = pGeaModel.gea01;
                    pResult.Message = "新增傳票單頭失敗!";
                    return(false);
                }

                gebList = boGla.OfGetGebList(pGeaModel.gea01, pGeaModel.gea02, pGeaModel.gea03, pGeaModel.gea04);
                if (gebList == null || gebList.Count == 0)
                {
                    pResult.Key1    = pGeaModel.gea01;
                    pResult.Message = "查無分錄底稿單身資料!";
                    return(false);
                }

                boGla.OfCreateDao("gfb_tb", "*", "");
                selectSql = @"SELECT * FROM gfb_tb WHERE 1<>1";
                dtGfb     = boGla.OfGetDataTable(selectSql);
                foreach (geb_tb gebModel in gebList.OrderBy(p => p.geb05))
                {
                    drGfb            = dtGfb.NewRow();
                    drGfb["gfb01"]   = gfa01New;        //傳票編號
                    drGfb["gfb02"]   = gebModel.geb05;  //項次
                    drGfb["gfb03"]   = gebModel.geb06;  //科目編號
                    drGfb["gfb04"]   = gebModel.geb07;  //摘要
                    drGfb["gfb05"]   = gebModel.geb08;  //部門
                    drGfb["gfb06"]   = gebModel.geb09;  //借貸別
                    drGfb["gfb07"]   = gebModel.geb10;  //本幣金額
                    drGfb["gfb08"]   = gebModel.geb11;  //原幣幣別
                    drGfb["gfb09"]   = gebModel.geb12;  //匯率
                    drGfb["gfb10"]   = gebModel.geb13;  //原幣金額
                    drGfb["gfb11"]   = DBNull.Value;    //保留
                    drGfb["gfb12"]   = DBNull.Value;    //保留
                    drGfb["gfb13"]   = DBNull.Value;    //保留
                    drGfb["gfb14"]   = DBNull.Value;    //保留
                    drGfb["gfb15"]   = DBNull.Value;    //保留
                    drGfb["gfb16"]   = DBNull.Value;    //保留
                    drGfb["gfb17"]   = DBNull.Value;    //保留
                    drGfb["gfb18"]   = DBNull.Value;    //保留
                    drGfb["gfb19"]   = DBNull.Value;    //保留
                    drGfb["gfb20"]   = DBNull.Value;    //保留
                    drGfb["gfbcomp"] = _loginInfo.CompNo;
                    drGfb["gfbcreu"] = _loginInfo.UserNo;
                    drGfb["gfbcreg"] = _loginInfo.DeptNo;
                    drGfb["gfbcred"] = OfGetNow();
                    drGfb["gfbmodu"] = DBNull.Value;
                    drGfb["gfbmodg"] = DBNull.Value;
                    drGfb["gfbmodd"] = DBNull.Value;
                    dtGfb.Rows.Add(drGfb);
                }

                if (boGla.OfUpdate(dtGfb) == -1)
                {
                    pResult.Key1    = pGeaModel.gea01;
                    pResult.Message = "新增傳票單身失敗!";
                    return(false);
                }

                updateSql   = @"UPDATE cea_tb 
                            SET cea29=@cea29
                            WHERE cea01=@cea01
                            ";
                sqlParmList = new List <SqlParameter>();
                sqlParmList.Add(new SqlParameter("@cea29", gfa01New));
                sqlParmList.Add(new SqlParameter("@cea01", pCeaModel.cea01));
                chkCnts = OfExecuteNonquery(updateSql, sqlParmList.ToArray());
                if (chkCnts != 1)
                {
                    pResult.Key1    = pGeaModel.gea01;
                    pResult.Message = "更新應收帳款失敗!";
                    return(false);
                }

                updateSql   = @"UPDATE gea_tb 
                            SET gea06=@gea06,
                                gea07=@gea07
                            WHERE gea01=@gea01
                                 AND gea02=@gea02
                                AND gea03=@gea03
                                AND gea04=@gea04
                            ";
                sqlParmList = new List <SqlParameter>();
                sqlParmList.Add(new SqlParameter("@gea06", gfa01New));
                sqlParmList.Add(new SqlParameter("@gea07", gfa02));
                sqlParmList.Add(new SqlParameter("@gea01", pGeaModel.gea01));
                sqlParmList.Add(new SqlParameter("@gea02", pGeaModel.gea02));
                sqlParmList.Add(new SqlParameter("@gea03", pGeaModel.gea03));
                sqlParmList.Add(new SqlParameter("@gea04", pGeaModel.gea04));
                chkCnts = OfExecuteNonquery(updateSql, sqlParmList.ToArray());
                if (chkCnts != 1)
                {
                    pResult.Key1    = pGeaModel.gea01;
                    pResult.Message = "更新應收帳款失敗!";
                    return(false);
                }

                return(true);
            }
            catch (Exception ex)
            {
                pResult.Key1      = pCeaModel.cea01;
                pResult.Message   = ex.Message;
                pResult.Exception = ex;
                throw;
            }
        }