示例#1
0
        public void DoInsertReceiving(tinpreceiving rec, List<tinpreceivingdtl> lstDtl)
        {
            string n1 = string.Empty;
            string n2 = string.Empty;

             ReceivingDal dal = new ReceivingDal(dbInstance);
            CustOrderHistoryBll historyBll = new CustOrderHistoryBll(dbInstance, CurrentContextInfo);
            string eventGroup = Function.GetGUID();

            try
            {
                dbInstance.BeginTransaction();

                baseDal.DoInsert<tinpreceiving>(rec);

                //List<tinpreceivingctndtl> lstCTN = new List<tinpreceivingctndtl>();

                for (int i = 0; i < lstDtl.Count; i++)
                {
                    baseDal.DoInsert<tinpreceivingdtl>(lstDtl[i]);

                    if (lstDtl[i].cartonno.IndexOf("-") > 0)
                    {
                        n1 = lstDtl[i].cartonno.Substring(0, lstDtl[i].cartonno.IndexOf("-"));
                        n2 = lstDtl[i].cartonno.Substring(lstDtl[i].cartonno.IndexOf("-") + 1);

                        for (int j = 0; j < (int.Parse(n2) - int.Parse(n1) + 1); j++)
                        {
                            tinpreceivingctndtl ctn = BuildCartonDtlObject(lstDtl[i].recsysid,
                               lstDtl[i].reclineno, lstDtl[i].custorderno, (int.Parse(n1) + j).ToString(), lstDtl[i].styleno,
                               lstDtl[i].color, lstDtl[i].size,lstDtl[i].pairqty / lstDtl[i].cartonqty,
                               lstDtl[i].checktype,lstDtl[i].remark,lstDtl[i].ismixed,rec.customerid);

                            string recno = dal.CheckDuplicate(lstDtl[i].custorderno, lstDtl[i].styleno,
                                lstDtl[i].color, lstDtl[i].size, (int.Parse(n1) + j).ToString());
                            if (recno.Trim()!=string.Empty)
                            {
                                throw new Exception("订单号[" + lstDtl[i].custorderno +
                                    "],箱号[" + (int.Parse(n1) + j).ToString() +
                                    "],款式[" + lstDtl[i].styleno +
                                    "],颜色[" + lstDtl[i].color +
                                    "],尺码[" + lstDtl[i].size + "]有重复[来料单号:" + recno + "].");
                            }

                            baseDal.DoInsert<tinpreceivingctndtl>(ctn);

                            historyBll.WriteHistory("Receiving", eventGroup,rec.customerid, lstDtl[i].custorderno,
                                (int.Parse(n1) + j).ToString(), lstDtl[i].styleno, lstDtl[i].color,
                                lstDtl[i].size, 1, lstDtl[i].pairqty / lstDtl[i].cartonqty, rec.recsysid,
                                rec.remark);

                            StaticValueDal svDal = new StaticValueDal(dbInstance);
                            svDal.autoInsertColor(lstDtl[i].color, lstDtl[i].color, CurrentContextInfo.CurrentUser);
                        }
                    }
                    else
                    {
                        tinpreceivingctndtl ctn = BuildCartonDtlObject(lstDtl[i].recsysid,
                           lstDtl[i].reclineno, lstDtl[i].custorderno, lstDtl[i].cartonno, lstDtl[i].styleno,
                               lstDtl[i].color, lstDtl[i].size, lstDtl[i].pairqty, lstDtl[i].checktype,
                               lstDtl[i].remark,lstDtl[i].ismixed,rec.customerid);

                        string recno = dal.CheckDuplicate(lstDtl[i].custorderno, lstDtl[i].styleno,
                                lstDtl[i].color, lstDtl[i].size, lstDtl[i].cartonno);
                        if (recno.Trim() != string.Empty)
                        {
                            throw new Exception("订单号[" + lstDtl[i].custorderno +
                                   "],箱号[" + lstDtl[i].cartonno +
                                   "],款式[" + lstDtl[i].styleno +
                                   "],颜色[" + lstDtl[i].color +
                                   "],尺码[" + lstDtl[i].size + "]有重复[来料单号:" + recno + "].");
                        }

                        baseDal.DoInsert<tinpreceivingctndtl>(ctn);

                        historyBll.WriteHistory("Receiving", eventGroup,rec.customerid, lstDtl[i].custorderno,
                                lstDtl[i].cartonno, lstDtl[i].styleno, lstDtl[i].color,
                                lstDtl[i].size, 1, lstDtl[i].pairqty, rec.recsysid,
                                rec.remark);

                        StaticValueDal svDal = new StaticValueDal(dbInstance);
                        svDal.autoInsertColor(lstDtl[i].color, lstDtl[i].color, CurrentContextInfo.CurrentUser);
                    }
                }

                dbInstance.Commit();
            }
            catch (Exception ex)
            {
                dbInstance.Rollback();
                throw ex;
            }
            finally
            {
                dbInstance.CloseConnection();
            }
        }
示例#2
0
        //public void DoUpdateReceiving(tinpreceiving rec, List<tinpreceivingdtl> lstDtl)
        //{
        //    string n1 = string.Empty;
        //    string n2 = string.Empty;
        //    ReceivingDal dal = new ReceivingDal(dbInstance);
        //    CustOrderHistoryBll historyBll = new CustOrderHistoryBll(dbInstance, CurrentContextInfo);
        //    string eventGroup = Function.GetGUID();
        //    try
        //    {
        //        dbInstance.BeginTransaction();
        //        List<MESParameterInfo> lstParameters = new List<MESParameterInfo>() {
        //            new MESParameterInfo(){ ParamName="recsysid",ParamValue=rec.recsysid}
        //        };
        //        baseDal.DoDelete<tinpreceivingctndtl>(lstParameters);
        //        baseDal.DoDelete<tinpreceivingdtl>(lstParameters);
        //        historyBll.RemoveHistory("Receiving", rec.recsysid);
        //        baseDal.DoUpdate<tinpreceiving>(rec);
        //        for (int i = 0; i < lstDtl.Count; i++)
        //        {
        //            baseDal.DoInsert<tinpreceivingdtl>(lstDtl[i]);
        //            if (lstDtl[i].cartonno.IndexOf("-") > 0)
        //            {
        //                n1 = lstDtl[i].cartonno.Substring(0, lstDtl[i].cartonno.IndexOf("-"));
        //                n2 = lstDtl[i].cartonno.Substring(lstDtl[i].cartonno.IndexOf("-") + 1);
        //                for (int j = 0; j < (int.Parse(n2) - int.Parse(n1) + 1 ); j++)
        //                {
        //                    tinpreceivingctndtl ctn = BuildCartonDtlObject(lstDtl[i].recsysid,
        //                       lstDtl[i].reclineno,lstDtl[i].custorderno, (int.Parse(n1) + j).ToString(), lstDtl[i].styleno,
        //                       lstDtl[i].color, lstDtl[i].size, lstDtl[i].pairqty / lstDtl[i].cartonqty,
        //                       lstDtl[i].checktype, lstDtl[i].remark,lstDtl[i].ismixed,rec.customerid);
        //                    string recno = dal.CheckDuplicate(lstDtl[i].custorderno, lstDtl[i].styleno,
        //                                                   lstDtl[i].color, lstDtl[i].size, (int.Parse(n1) + j).ToString());
        //                    if (recno.Trim() != string.Empty)
        //                    {
        //                        throw new Exception("订单号[" + lstDtl[i].custorderno +
        //                           "],箱号[" + (int.Parse(n1) + j).ToString() +
        //                           "],款式[" + lstDtl[i].styleno +
        //                           "],颜色[" + lstDtl[i].color +
        //                           "],尺码[" + lstDtl[i].size + "]有重复[来料单号:" + recno + "].");
        //                    }
        //                    baseDal.DoInsert<tinpreceivingctndtl>(ctn);
        //                    historyBll.WriteHistory("Receiving", eventGroup,rec.customerid, lstDtl[i].custorderno,
        //                        (int.Parse(n1) + j).ToString(), lstDtl[i].styleno, lstDtl[i].color,
        //                        lstDtl[i].size, 1, lstDtl[i].pairqty / lstDtl[i].cartonqty, rec.recsysid,
        //                        rec.remark);
        //                    StaticValueDal svDal = new StaticValueDal(dbInstance);
        //                    svDal.autoInsertColor(lstDtl[i].color, lstDtl[i].color, CurrentContextInfo.CurrentUser);
        //                }
        //            }
        //            else
        //            {
        //                tinpreceivingctndtl ctn = BuildCartonDtlObject(lstDtl[i].recsysid,
        //                   lstDtl[i].reclineno,lstDtl[i].custorderno, lstDtl[i].cartonno, lstDtl[i].styleno,
        //                       lstDtl[i].color, lstDtl[i].size, lstDtl[i].pairqty, lstDtl[i].checktype,
        //                       lstDtl[i].remark,lstDtl[i].ismixed,rec.customerid);
        //                string recno = dal.CheckDuplicate(lstDtl[i].custorderno, lstDtl[i].styleno,
        //                       lstDtl[i].color, lstDtl[i].size, lstDtl[i].cartonno);
        //                if (recno.Trim() != string.Empty)
        //                {
        //                    throw new Exception("订单号[" + lstDtl[i].custorderno +
        //                          "],箱号[" + lstDtl[i].cartonno +
        //                          "],款式[" + lstDtl[i].styleno +
        //                          "],颜色[" + lstDtl[i].color +
        //                          "],尺码[" + lstDtl[i].size + "]有重复[来料单号:" + recno + "].");
        //                }
        //                baseDal.DoInsert<tinpreceivingctndtl>(ctn);
        //                historyBll.WriteHistory("Receiving", eventGroup,rec.customerid, lstDtl[i].custorderno,
        //                        lstDtl[i].cartonno, lstDtl[i].styleno, lstDtl[i].color,
        //                        lstDtl[i].size, 1, lstDtl[i].pairqty, rec.recsysid,
        //                        rec.remark);
        //                StaticValueDal svDal = new StaticValueDal(dbInstance);
        //                svDal.autoInsertColor(lstDtl[i].color, lstDtl[i].color, CurrentContextInfo.CurrentUser);
        //            }
        //        }
        //        dbInstance.Commit();
        //    }
        //    catch (Exception ex)
        //    {
        //        dbInstance.Rollback();
        //        throw ex;
        //    }
        //    finally
        //    {
        //        dbInstance.CloseConnection();
        //    }
        //}
        public void DoUpdateReceiving(tinpreceiving rec, List<tinpreceivingdtl> lstDtlNew, List<tinpreceivingdtl> lstDtlUpdated, List<string> lstDeleted)
        {
            string n1 = string.Empty;
            string n2 = string.Empty;

            ReceivingDal dal = new ReceivingDal(dbInstance);
            CustOrderHistoryBll historyBll = new CustOrderHistoryBll(dbInstance, CurrentContextInfo);
            string eventGroup = Function.GetGUID();

            try
            {
                dbInstance.BeginTransaction();
                List<MESParameterInfo> lstParameters = new List<MESParameterInfo>() {
                    new MESParameterInfo(){ ParamName="recsysid",ParamValue=rec.recsysid}
                };

                DataSet dsCartonDetail = GetReceivingCartonDetailRecords(lstParameters);

                baseDal.DoUpdate<tinpreceiving>(rec);

                #region check delete
                bool canDeleted = true;
                for (int i = 0; i < lstDeleted.Count; i++)
                {
                    canDeleted = true;
                    for (int x = 0; x < dsCartonDetail.Tables[0].Rows.Count; x++)
                    {
                        if (lstDeleted[i] == dsCartonDetail.Tables[0].Rows[x]["reclineno"].ToString() &&
                                            (dsCartonDetail.Tables[0].Rows[x]["cartonlocation"].ToString() != "Warehouse" ||
                                            dsCartonDetail.Tables[0].Rows[x]["cartonstatus"].ToString() != "Active"))
                        {
                            canDeleted = false;
                            throw new Exception("行号[" + dsCartonDetail.Tables[0].Rows[x]["reclineno"].ToString() + "]里的箱号状态不允许删除");
                        }
                    }

                    if (canDeleted)
                    {
                        List<MESParameterInfo> lstParametersDeleted = new List<MESParameterInfo>() {
                            new MESParameterInfo(){ ParamName="recsysid",ParamValue=rec.recsysid},
                            new MESParameterInfo(){ ParamName="reclineno",ParamValue=lstDeleted[i]}
                        };

                        baseDal.DoDelete<tinpreceivingctndtl>(lstParametersDeleted);
                        baseDal.DoDelete<tinpreceivingdtl>(lstParametersDeleted);
                    }
                }
                #endregion

                #region check insert
                for (int i = 0; i < lstDtlNew.Count; i++)
                {
                    baseDal.DoInsert<tinpreceivingdtl>(lstDtlNew[i]);

                    #region all to carton detail
                    if (lstDtlNew[i].cartonno.IndexOf("-") > 0)
                    {
                        n1 = lstDtlNew[i].cartonno.Substring(0, lstDtlNew[i].cartonno.IndexOf("-"));
                        n2 = lstDtlNew[i].cartonno.Substring(lstDtlNew[i].cartonno.IndexOf("-") + 1);

                        for (int j = 0; j < (int.Parse(n2) - int.Parse(n1) + 1); j++)
                        {
                            tinpreceivingctndtl ctn = BuildCartonDtlObject(lstDtlNew[i].recsysid,
                               lstDtlNew[i].reclineno, lstDtlNew[i].custorderno, (int.Parse(n1) + j).ToString(), lstDtlNew[i].styleno,
                               lstDtlNew[i].color, lstDtlNew[i].size, lstDtlNew[i].pairqty / lstDtlNew[i].cartonqty,
                               lstDtlNew[i].checktype, lstDtlNew[i].remark, lstDtlNew[i].ismixed, rec.customerid);

                            string recno = dal.CheckDuplicate(lstDtlNew[i].custorderno, lstDtlNew[i].styleno,
                                lstDtlNew[i].color, lstDtlNew[i].size, (int.Parse(n1) + j).ToString());
                            if (recno.Trim() != string.Empty)
                            {
                                throw new Exception("订单号[" + lstDtlNew[i].custorderno +
                                    "],箱号[" + (int.Parse(n1) + j).ToString() +
                                    "],款式[" + lstDtlNew[i].styleno +
                                    "],颜色[" + lstDtlNew[i].color +
                                    "],尺码[" + lstDtlNew[i].size + "]有重复[来料单号:" + recno + "].");
                            }

                            baseDal.DoInsert<tinpreceivingctndtl>(ctn);

                            historyBll.WriteHistory("Receiving", eventGroup, rec.customerid, lstDtlNew[i].custorderno,
                                (int.Parse(n1) + j).ToString(), lstDtlNew[i].styleno, lstDtlNew[i].color,
                                lstDtlNew[i].size, 1, lstDtlNew[i].pairqty / lstDtlNew[i].cartonqty, rec.recsysid,
                                rec.remark);

                            StaticValueDal svDal = new StaticValueDal(dbInstance);
                            svDal.autoInsertColor(lstDtlNew[i].color, lstDtlNew[i].color, CurrentContextInfo.CurrentUser);
                        }
                    }
                    else
                    {
                        tinpreceivingctndtl ctn = BuildCartonDtlObject(lstDtlNew[i].recsysid,
                           lstDtlNew[i].reclineno, lstDtlNew[i].custorderno, lstDtlNew[i].cartonno, lstDtlNew[i].styleno,
                               lstDtlNew[i].color, lstDtlNew[i].size, lstDtlNew[i].pairqty, lstDtlNew[i].checktype,
                               lstDtlNew[i].remark, lstDtlNew[i].ismixed, rec.customerid);

                        string recno = dal.CheckDuplicate(lstDtlNew[i].custorderno, lstDtlNew[i].styleno,
                                lstDtlNew[i].color, lstDtlNew[i].size, lstDtlNew[i].cartonno);
                        if (recno.Trim() != string.Empty)
                        {
                            throw new Exception("订单号[" + lstDtlNew[i].custorderno +
                                   "],箱号[" + lstDtlNew[i].cartonno +
                                   "],款式[" + lstDtlNew[i].styleno +
                                   "],颜色[" + lstDtlNew[i].color +
                                   "],尺码[" + lstDtlNew[i].size + "]有重复[来料单号:" + recno + "].");
                        }

                        baseDal.DoInsert<tinpreceivingctndtl>(ctn);

                        historyBll.WriteHistory("Receiving", eventGroup, rec.customerid, lstDtlNew[i].custorderno,
                                lstDtlNew[i].cartonno, lstDtlNew[i].styleno, lstDtlNew[i].color,
                                lstDtlNew[i].size, 1, lstDtlNew[i].pairqty, rec.recsysid,
                                rec.remark);

                        StaticValueDal svDal = new StaticValueDal(dbInstance);
                        svDal.autoInsertColor(lstDtlNew[i].color, lstDtlNew[i].color, CurrentContextInfo.CurrentUser);
                    }
                    #endregion
                }
                #endregion

                #region check Update
                bool canUpdated = true;
                for (int i = 0; i < lstDtlUpdated.Count; i++)
                {
                    baseDal.DoUpdate<tinpreceivingdtl>(lstDtlUpdated[i]);

                    canUpdated = true;
                    for (int x = 0; x < dsCartonDetail.Tables[0].Rows.Count; x++)
                    {
                        if (lstDtlUpdated[i].reclineno == dsCartonDetail.Tables[0].Rows[x]["reclineno"].ToString() &&
                                            (dsCartonDetail.Tables[0].Rows[x]["cartonlocation"].ToString() != "Warehouse" ||
                                            dsCartonDetail.Tables[0].Rows[x]["cartonstatus"].ToString() != "Active"))
                        {
                            canUpdated = false;
                            throw new Exception("行号[" + dsCartonDetail.Tables[0].Rows[x]["reclineno"].ToString() + "]里的箱号状态不允许更改");
                        }
                    }

                    if (canUpdated)
                    {
                        List<MESParameterInfo> lstParametersUpdated = new List<MESParameterInfo>() {
                            new MESParameterInfo(){ ParamName="recsysid",ParamValue=rec.recsysid},
                            new MESParameterInfo(){ ParamName="reclineno",ParamValue=lstDtlUpdated[i].reclineno}
                        };

                        baseDal.DoDelete<tinpreceivingctndtl>(lstParametersUpdated);

                        #region add to carton detail
                        if (lstDtlUpdated[i].cartonno.IndexOf("-") > 0)
                        {
                            n1 = lstDtlUpdated[i].cartonno.Substring(0, lstDtlUpdated[i].cartonno.IndexOf("-"));
                            n2 = lstDtlUpdated[i].cartonno.Substring(lstDtlUpdated[i].cartonno.IndexOf("-") + 1);

                            for (int j = 0; j < (int.Parse(n2) - int.Parse(n1) + 1); j++)
                            {
                                tinpreceivingctndtl ctn = BuildCartonDtlObject(lstDtlUpdated[i].recsysid,
                                   lstDtlUpdated[i].reclineno, lstDtlUpdated[i].custorderno, (int.Parse(n1) + j).ToString(), lstDtlUpdated[i].styleno,
                                   lstDtlUpdated[i].color, lstDtlUpdated[i].size, lstDtlUpdated[i].pairqty / lstDtlUpdated[i].cartonqty,
                                   lstDtlUpdated[i].checktype, lstDtlUpdated[i].remark, lstDtlUpdated[i].ismixed, rec.customerid);

                                string recno = dal.CheckDuplicate(lstDtlUpdated[i].custorderno, lstDtlUpdated[i].styleno,
                                    lstDtlUpdated[i].color, lstDtlUpdated[i].size, (int.Parse(n1) + j).ToString());
                                if (recno.Trim() != string.Empty)
                                {
                                    throw new Exception("订单号[" + lstDtlUpdated[i].custorderno +
                                        "],箱号[" + (int.Parse(n1) + j).ToString() +
                                        "],款式[" + lstDtlUpdated[i].styleno +
                                        "],颜色[" + lstDtlUpdated[i].color +
                                        "],尺码[" + lstDtlUpdated[i].size + "]有重复[来料单号:" + recno + "].");
                                }

                                baseDal.DoInsert<tinpreceivingctndtl>(ctn);

                                historyBll.WriteHistory("Receiving", eventGroup, rec.customerid, lstDtlUpdated[i].custorderno,
                                    (int.Parse(n1) + j).ToString(), lstDtlUpdated[i].styleno, lstDtlUpdated[i].color,
                                    lstDtlUpdated[i].size, 1, lstDtlUpdated[i].pairqty / lstDtlUpdated[i].cartonqty, rec.recsysid,
                                    rec.remark);

                                StaticValueDal svDal = new StaticValueDal(dbInstance);
                                svDal.autoInsertColor(lstDtlUpdated[i].color, lstDtlUpdated[i].color, CurrentContextInfo.CurrentUser);
                            }
                        }
                        else
                        {
                            tinpreceivingctndtl ctn = BuildCartonDtlObject(lstDtlUpdated[i].recsysid,
                               lstDtlUpdated[i].reclineno, lstDtlUpdated[i].custorderno, lstDtlUpdated[i].cartonno, lstDtlUpdated[i].styleno,
                                   lstDtlUpdated[i].color, lstDtlUpdated[i].size, lstDtlUpdated[i].pairqty, lstDtlUpdated[i].checktype,
                                   lstDtlUpdated[i].remark, lstDtlUpdated[i].ismixed, rec.customerid);

                            string recno = dal.CheckDuplicate(lstDtlUpdated[i].custorderno, lstDtlUpdated[i].styleno,
                                    lstDtlUpdated[i].color, lstDtlUpdated[i].size, lstDtlUpdated[i].cartonno);
                            if (recno.Trim() != string.Empty)
                            {
                                throw new Exception("订单号[" + lstDtlUpdated[i].custorderno +
                                       "],箱号[" + lstDtlUpdated[i].cartonno +
                                       "],款式[" + lstDtlUpdated[i].styleno +
                                       "],颜色[" + lstDtlUpdated[i].color +
                                       "],尺码[" + lstDtlUpdated[i].size + "]有重复[来料单号:" + recno + "].");
                            }

                            baseDal.DoInsert<tinpreceivingctndtl>(ctn);

                            historyBll.WriteHistory("Receiving", eventGroup, rec.customerid, lstDtlUpdated[i].custorderno,
                                    lstDtlUpdated[i].cartonno, lstDtlUpdated[i].styleno, lstDtlUpdated[i].color,
                                    lstDtlUpdated[i].size, 1, lstDtlUpdated[i].pairqty, rec.recsysid,
                                    rec.remark);

                            StaticValueDal svDal = new StaticValueDal(dbInstance);
                            svDal.autoInsertColor(lstDtlUpdated[i].color, lstDtlUpdated[i].color, CurrentContextInfo.CurrentUser);
                        }
                        #endregion
                    }
                }
                #endregion

                dbInstance.Commit();
            }
            catch (Exception ex)
            {
                dbInstance.Rollback();
                throw ex;
            }
            finally
            {
                dbInstance.CloseConnection();
            }
        }