/// <summary> /// 绑定Grid /// </summary> private void BindGridDts() { IOFormDtsRule rule = new IOFormDtsRule(); gridView2.GridControl.DataSource = rule.RShow(HTDataID, ProcessGrid.GetQueryField(gridView2)); gridView2.GridControl.Show(); }
/// <summary> /// 绑定Grid /// </summary> public override void BindGrid() { //IOFormRule rule = new IOFormRule(); string ConditionAttn = " AND HeadType=" + this.FormListAID; ConditionAttn += " AND SubType in(Select ID FROM Enum_FormList WHERE IsShow=1 )"; //ConditionAttn += " AND WHID in(Select WHID FROM WH_WH WHERE isnull(IsJK,0)=0 )";//2012-2-23caoxg //gridView2.GridControl.DataSource = rule.RShow(ConditionAttn + HTDataConditionStr, ProcessGrid.GetQueryField(gridView2)); //gridView2.GridControl.Show(); IOFormDtsRule rule = new IOFormDtsRule(); //gridView2.GridControl.DataSource = rule.RShow(ConditionAttn + HTDataConditionStr, ProcessGrid.GetQueryField(gridView2)); DataTable dt = rule.RShow(ConditionAttn + HTDataConditionStr, ProcessGrid.GetQueryField(gridView2).Replace("MakeOPName", "''MakeOPName")); ProductMakeOP(dt); gridView2.GridControl.DataSource = dt; gridView2.GridControl.Show(); }
/// <summary> /// 撤销核销处理 /// </summary> public void RHXCancel(InvoiceOperation entity, int p_DtsID, IDBTransAccess sqlTrans) { try { string sql = string.Empty; //First 处理发票主表数据 InvoiceOperation entityinvoice = new InvoiceOperation(sqlTrans);//处理收付款主表数据 entityinvoice.ID = entity.ID; entityinvoice.SelectByID(); //Second 删除发票核销明细数据 InvoiceOperationDtsRule dtsRule = new InvoiceOperationDtsRule(); InvoiceOperationDts entityDts = new InvoiceOperationDts(sqlTrans); entityDts.ID = p_DtsID; entityDts.SelectByID(); if (entityDts.PayAmount != 0) { throw new Exception("不能操作,数据有收付款数据了,不能进行撤销"); } dtsRule.RDelete(entityDts, sqlTrans);//删除明细实体 //First 处理发票主表数据 entityinvoice.PreHXFlag = (int)YesOrNo.No; entityinvoice.PreHXQty -= entityDts.DInvoiceQty; entityinvoice.PreHXAmount -= entityDts.DInvoiceAmount; this.RUpdate(entityinvoice, sqlTrans); IOFormDtsRule ioformdtsRule = new IOFormDtsRule(); //处理出入库单据明细数据 IOFormDts entityIOF = new IOFormDts(sqlTrans); //出入库单据明细 entityIOF.ID = entityDts.DLOADDtsID; entityIOF.SelectByID(); //处理发票明细数据;出入库明细数据 if (entityIOF.PayAmount != 0) { throw new Exception("不能操作,数据已有收付款数据 ID:" + entityDts.DLOADDtsID + " " + entityIOF.ItemCode + " " + entityIOF.ColorNum); } sql = "UPDATE WH_IOFormDts SET InvoiceQty=ISNULL(InvoiceQty,0)-" + "(" + SysString.ToDBString(entityDts.DInvoiceQty) + ")"; sql += ",InvoiceAmount=ISNULL(InvoiceAmount,0)-" + "(" + SysString.ToDBString(entityDts.DInvoiceAmount) + ")"; sql += ",DtsInvoiceDelOPID=" + SysString.ToDBString(entity.SaleOPID); sql += ",DtsInvoiceDelTime=null"; sql += ",DtsInvoiceNo=''"; sql += ",DtsInvoiceDelFlag=0";//开票完成标志 sql += " WHERE ID=" + SysString.ToDBString(entityDts.DLOADDtsID); sqlTrans.ExecuteNonQuery(sql); } catch (BaseException) { throw; } catch (Exception E) { throw new BaseException(E.Message); } }
/// <summary> /// 绑定Grid /// </summary> public override void BindGrid() { IOFormDtsRule rule = new IOFormDtsRule(); gridView1.GridControl.DataSource = rule.RShowDts(HTDataConditionStr, ProcessGrid.GetQueryField(gridView1)); gridView1.GridControl.Show(); }
/// <summary> /// 绑定Grid /// </summary> public override void BindGrid() { IOFormDtsRule rule = new IOFormDtsRule(); gridView1.GridControl.DataSource = rule.RShowIO(HTDataConditionStr + " AND HeadType=14 AND SubmitFlag=1 ORDER BY FormDate DESC ", ProcessGrid.GetQueryField(gridView1)); gridView1.GridControl.Show(); BindGrid2(); }
/// <summary> /// 绑定数据明细 /// </summary> public override void BindGridDts() { IOFormDtsRule rule = new IOFormDtsRule(); DataTable dtDts = rule.RShow(" AND MainID=" + HTDataID + " ORDER BY Seq", ProcessGrid.GetQueryField(gridView1)); gridView1.GridControl.DataSource = dtDts; gridView1.GridControl.Show(); }
/// <summary> /// 绑定Grid /// </summary> public void BindGrid2() { IOFormDtsRule rule = new IOFormDtsRule(); DataTable dt = rule.RShowIO(HTDataConditionStr + " AND HeadType=13 AND SubmitFlag=1 ORDER BY FormDate DESC ", ProcessGrid.GetQueryField(gridView2)); Proc(dt); gridView2.GridControl.DataSource = dt; gridView2.GridControl.Show(); }
/// <summary> /// 保存(传入事务处理) /// </summary> /// <param name="p_Entity"></param> /// <param name="p_BE"></param> /// <param name="sqlTrans"></param> public void RSaveOther(IOForm p_Entity, IOFormDts[] p_EntityDts, ArrayList list, IDBTransAccess sqlTrans) { try { string sql = string.Empty; int FormListTopType = IOFormDtsRule.GetFormListTopTypeByFormListID(p_Entity.HeadType, sqlTrans);//顶层单据类型 sql = "SELECT BoxNo FROM WH_IOFormDtsPack WHERE MainID=" + p_Entity.ID.ToString(); sql += " AND ID NOT IN" + string.Format("({0})", GetIDExist(list)); DataTable dtDelete = sqlTrans.Fill(sql); //删除表结构 if (dtDelete.Rows.Count != 0) //有需要删除的数据 { sql = "DELETE FROM WH_IOFormDtsPack WHERE MainID=" + p_Entity.ID.ToString(); sql += " AND ID NOT IN" + string.Format("({0})", GetIDExist(list)); sqlTrans.ExecuteNonQuery(sql);//删除原单据里应该删除的明细数据,即数据库里有但是UI里已经删除的数据 } for (int i = 0; i < list.Count; i++) { IOFormDtsPack entitydts = (IOFormDtsPack)list[i]; int ioformdtsdex = -1; for (int m = 0; m < p_EntityDts.Length; m++) { if (p_EntityDts[m].Seq == entitydts.Seq)//找到相同的SEQ了 { ioformdtsdex = m; break; } } if (ioformdtsdex == -1)//未找到,异常 { throw new Exception("码单输入异常,未找到单据明细,行号:" + entitydts.Seq); } if (entitydts.ID != 0)//ID不为0说明数据库中已经存在 { this.RUpdateOther(p_EntityDts[ioformdtsdex], entitydts, sqlTrans); } else { entitydts.MainID = p_Entity.ID; entitydts.DID = p_EntityDts[ioformdtsdex].ID; this.RAddOther(p_EntityDts[ioformdtsdex], entitydts, sqlTrans); } } } catch (BaseException) { throw; } catch (Exception E) { throw new BaseException(E.Message); } }
/// <summary> /// 新增(传入事务处理) /// </summary> /// <param name="p_BE">要新增的实体</param> /// <param name="sqlTrans">事务类</param> public void RAdd(int p_ID, string p_IDStr, IDBTransAccess sqlTrans) { try { string sql = "SELECT WHID,SectionID,SBitID,JarNum,Batch FROM WH_PackBox WHERE ID IN (" + p_IDStr + ")"; sql += " GROUP BY WHID,SectionID,SBitID,JarNum,Batch"; DataTable dt = sqlTrans.Fill(sql); int MaxSeq = GetMaxSeq(p_ID); decimal Qty = 0; IOFormDtsRule rule = new IOFormDtsRule(); for (int i = 0; i < dt.Rows.Count; i++) { if (i == 0)//第一行更新 { sql = "SELECT * FROM WH_PackBox WHERE ID IN (" + p_IDStr + ")"; sql += " AND WHID=" + SysString.ToDBString(SysConvert.ToString(dt.Rows[i]["WHID"])); sql += " AND SectionID=" + SysString.ToDBString(SysConvert.ToString(dt.Rows[i]["SectionID"])); sql += " AND SBitID=" + SysString.ToDBString(SysConvert.ToString(dt.Rows[i]["SBitID"])); sql += " AND JarNum=" + SysString.ToDBString(SysConvert.ToString(dt.Rows[i]["JarNum"])); sql += " AND Batch=" + SysString.ToDBString(SysConvert.ToString(dt.Rows[i]["Batch"])); DataTable dtsql = sqlTrans.Fill(sql); IOFormDts entitydts = new IOFormDts(sqlTrans); entitydts.ID = p_ID; entitydts.SelectByID(); entitydts.WHID = SysConvert.ToString(dt.Rows[i]["WHID"]); entitydts.SectionID = SysConvert.ToString(dt.Rows[i]["SectionID"]); entitydts.SBitID = SysConvert.ToString(dt.Rows[i]["SBitID"]); entitydts.JarNum = SysConvert.ToString(dt.Rows[i]["JarNum"]); entitydts.Batch = SysConvert.ToString(dt.Rows[i]["Batch"]); entitydts.Qty = SysConvert.ToDecimal(SysConvert.ToDecimal(dtsql.Compute("SUM(Qty)", "")), 2); entitydts.Weight = SysConvert.ToDecimal(SysConvert.ToDecimal(dtsql.Compute("SUM(Weight)", "")), 2); entitydts.Yard = SysConvert.ToDecimal(SysConvert.ToDecimal(dtsql.Compute("SUM(Yard)", "")), 2); entitydts.PieceQty = dtsql.Rows.Count; entitydts.PackFlag = 1; if (entitydts.Unit == "RMB/KG" || entitydts.Unit == "USD/KG") { entitydts.Amount = entitydts.Weight * entitydts.SinglePrice; } if (entitydts.Unit == "RMB/M" || entitydts.Unit == "USD/M") { entitydts.Amount = entitydts.Qty * entitydts.SinglePrice; } if (entitydts.Unit == "RMB/Y" || entitydts.Unit == "USD/Y") { entitydts.Amount = entitydts.Yard * entitydts.SinglePrice; } rule.RUpdate(entitydts, sqlTrans); IOFormDtsPackRule prule = new IOFormDtsPackRule(); sql = "DELETE WH_IOFormDtsPack WHERE MainID=" + SysString.ToDBString(entitydts.MainID); sql += " AND Seq=" + SysString.ToDBString(entitydts.Seq); sqlTrans.ExecuteNonQuery(sql); for (int j = 0; j < dtsql.Rows.Count; j++) { IOFormDtsPack pentity = new IOFormDtsPack(sqlTrans); pentity.MainID = entitydts.MainID; pentity.Seq = entitydts.Seq; pentity.SubSeq = SysConvert.ToInt32(dtsql.Rows[j]["SubSeq"]); //zhoufc 2014.10.17 SubSeq表示卷号 pentity.GoodsLevel = SysConvert.ToString(dtsql.Rows[j]["GoodsLevel"]); pentity.BoxNo = SysConvert.ToString(dtsql.Rows[j]["BoxNo"]); pentity.Weight = SysConvert.ToDecimal(dtsql.Rows[j]["Weight"]); pentity.Qty = SysConvert.ToDecimal(dtsql.Rows[j]["Qty"]); pentity.Yard = SysConvert.ToDecimal(dtsql.Rows[j]["Yard"]); pentity.DID = entitydts.ID; prule.RAdd(pentity, sqlTrans); } } else { sql = "SELECT * FROM WH_PackBox WHERE ID IN (" + p_IDStr + ")"; sql += " AND WHID=" + SysString.ToDBString(SysConvert.ToString(dt.Rows[i]["WHID"])); sql += " AND SectionID=" + SysString.ToDBString(SysConvert.ToString(dt.Rows[i]["SectionID"])); sql += " AND SBitID=" + SysString.ToDBString(SysConvert.ToString(dt.Rows[i]["SBitID"])); sql += " AND JarNum=" + SysString.ToDBString(SysConvert.ToString(dt.Rows[i]["JarNum"])); sql += " AND Batch=" + SysString.ToDBString(SysConvert.ToString(dt.Rows[i]["Batch"])); DataTable dtsql = sqlTrans.Fill(sql); IOFormDts entitydts = new IOFormDts(sqlTrans); entitydts.ID = p_ID; entitydts.SelectByID(); entitydts.Seq = MaxSeq + i; entitydts.WHID = SysConvert.ToString(dt.Rows[i]["WHID"]); entitydts.SectionID = SysConvert.ToString(dt.Rows[i]["SectionID"]); entitydts.SBitID = SysConvert.ToString(dt.Rows[i]["SBitID"]); entitydts.JarNum = SysConvert.ToString(dt.Rows[i]["JarNum"]); entitydts.Batch = SysConvert.ToString(dt.Rows[i]["Batch"]); entitydts.Qty = SysConvert.ToDecimal(SysConvert.ToDecimal(dtsql.Compute("SUM(Qty)", ""))); entitydts.Weight = SysConvert.ToDecimal(SysConvert.ToDecimal(dtsql.Compute("SUM(Weight)", "")), 2); entitydts.Yard = SysConvert.ToDecimal(SysConvert.ToDecimal(dtsql.Compute("SUM(Yard)", "")), 2); entitydts.PieceQty = dtsql.Rows.Count; entitydts.PackFlag = 1; if (entitydts.Unit == "RMB/KG" || entitydts.Unit == "USD/KG") { entitydts.Amount = entitydts.Weight * entitydts.SinglePrice; } if (entitydts.Unit == "RMB/M" || entitydts.Unit == "USD/M") { entitydts.Amount = entitydts.Qty * entitydts.SinglePrice; } if (entitydts.Unit == "RMB/Y" || entitydts.Unit == "USD/Y") { entitydts.Amount = entitydts.Yard * entitydts.SinglePrice; } sql = "SELECT ID FROM WH_IOFormDts WHERE MainID=" + SysString.ToDBString(entitydts.MainID); sql += " AND Seq=" + SysString.ToDBString(entitydts.Seq); if (sqlTrans.Fill(sql).Rows.Count > 0) { throw new BaseException("不能增行,该行已存在"); } rule.RAdd(entitydts, sqlTrans); IOFormDtsPackRule prule = new IOFormDtsPackRule(); sql = "DELETE WH_IOFormDtsPack WHERE MainID=" + SysString.ToDBString(entitydts.MainID); sql += " AND Seq=" + SysString.ToDBString(entitydts.Seq); sqlTrans.ExecuteNonQuery(sql); for (int j = 0; j < dtsql.Rows.Count; j++) { IOFormDtsPack pentity = new IOFormDtsPack(sqlTrans); pentity.MainID = entitydts.MainID; pentity.Seq = entitydts.Seq; pentity.SubSeq = SysConvert.ToInt32(dtsql.Rows[j]["SubSeq"]); //zhoufc 2014.10.17 SubSeq表示卷号 pentity.GoodsLevel = SysConvert.ToString(dtsql.Rows[j]["GoodsLevel"]); pentity.BoxNo = SysConvert.ToString(dtsql.Rows[j]["BoxNo"]); pentity.Weight = SysConvert.ToDecimal(dtsql.Rows[j]["Weight"]); pentity.Qty = SysConvert.ToDecimal(dtsql.Rows[j]["Qty"]); pentity.Yard = SysConvert.ToDecimal(dtsql.Rows[j]["Yard"]); pentity.DID = entitydts.ID; prule.RAdd(pentity, sqlTrans); } } } } catch (BaseException) { throw; } catch (Exception E) { throw new BaseException(E.Message); } }
/// <summary> /// 保存(传入事务处理) /// </summary> /// <param name="p_Entity"></param> /// <param name="p_BE"></param> /// <param name="sqlTrans"></param> public void RSave(IOForm p_Entity, IOFormDts[] p_EntityDts, ArrayList list, IDBTransAccess sqlTrans) { try { string sql = string.Empty; int FormListTopType = IOFormDtsRule.GetFormListTopTypeByFormListID(p_Entity.HeadType, sqlTrans);//顶层单据类型 //if (FormListTopType != (int)WHFormList.入库 && FormListTopType != (int)WHFormList.期初入库)//如果不是入库类型的单据 if (FormListTopType != (int)WHFormList.入库 && FormListTopType != (int)WHFormList.期初入库 && FormListTopType != (int)WHFormList.面料入库单 && FormListTopType != (int)WHFormList.坯布入库单) //如果不是入库类型的单据 { RSaveOther(p_Entity, p_EntityDts, list, sqlTrans); return; } sql = "SELECT BoxNo FROM WH_IOFormDtsPack WHERE MainID=" + p_Entity.ID.ToString(); sql += " AND ID NOT IN" + string.Format("({0})", GetIDExist(list)); DataTable dtDelete = sqlTrans.Fill(sql); //删除表结构 if (dtDelete.Rows.Count != 0) //有需要删除的数据 { foreach (DataRow dr in dtDelete.Rows) //校验是否可以删除 { PackBoxRule pbrule = new PackBoxRule(); pbrule.RCheckDelete(dr["BoxNo"].ToString(), sqlTrans);//检测调用 } sql = "DELETE FROM WH_PackBox WHERE BoxNo IN(SELECT BoxNo FROM WH_IOFormDtsPack WHERE MainID=" + p_Entity.ID.ToString(); sql += " AND ID NOT IN" + string.Format("({0})", GetIDExist(list)) + ")";//删除码单明细数据 sqlTrans.ExecuteNonQuery(sql); sql = "DELETE FROM WH_IOFormDtsPack WHERE MainID=" + p_Entity.ID.ToString(); sql += " AND ID NOT IN" + string.Format("({0})", GetIDExist(list)); sqlTrans.ExecuteNonQuery(sql);//删除原单据里应该删除的明细数据,即数据库里有但是UI里已经删除的数据 } for (int i = 0; i < list.Count; i++) { IOFormDtsPack entitydts = (IOFormDtsPack)list[i]; int ioformdtsdex = -1; for (int m = 0; m < p_EntityDts.Length; m++) { if (p_EntityDts[m].Seq == entitydts.Seq)//找到相同的SEQ了 { ioformdtsdex = m; break; } } if (ioformdtsdex == -1)//未找到,异常 { throw new Exception("码单输入异常,未找到单据明细,行号:" + entitydts.Seq); } if (entitydts.ID != 0)//ID不为0说明数据库中已经存在 { PackBoxRule pbrule = new PackBoxRule(); pbrule.RCheckUpdate(entitydts.BoxNo, sqlTrans);//检测调用 this.RUpdate(p_EntityDts[ioformdtsdex], entitydts, sqlTrans); } else { entitydts.MainID = p_Entity.ID; this.RAdd(p_Entity, p_EntityDts[ioformdtsdex], entitydts, sqlTrans); } } } catch (BaseException) { throw; } catch (Exception E) { throw new BaseException(E.Message); } }
/// <summary> /// 核销处理 /// </summary> public void RHX(InvoiceOperation entity, InvoiceOperationDts entityDts, IDBTransAccess sqlTrans) { try { string sql = string.Empty; //First 处理发票主表数据 InvoiceOperation entityinvoice = new InvoiceOperation(sqlTrans);//处理收付款主表数据 entityinvoice.ID = entity.ID; entityinvoice.SelectByID(); if (entityinvoice.PreHXAmount + entityDts.DInvoiceAmount > entityinvoice.TotalAmount) { throw new Exception("不能操作,核销金额超过了开票未核金额"); } if (entityinvoice.PreHXQty + entityDts.DInvoiceQty > entityinvoice.TotalQty) { throw new Exception("不能操作,核销数量超过了开票未核数量"); } if (entityinvoice.PreHXAmount + entityDts.DInvoiceAmount == entityinvoice.TotalAmount) { entityinvoice.PreHXFlag = (int)YesOrNo.Yes; } entityinvoice.PreHXQty += entityDts.DInvoiceQty; entityinvoice.PreHXAmount += entityDts.DInvoiceAmount; this.RUpdate(entityinvoice, sqlTrans); //Second IOFormDtsRule ioformdtsRule = new IOFormDtsRule(); //处理出入库单据明细数据 IOFormDts entityIOF = new IOFormDts(sqlTrans); //出入库单据明细 entityIOF.ID = entityDts.DLOADDtsID; entityIOF.SelectByID(); if (entityIOF.DtsInvoiceDelFlag == (int)YesOrNo.Yes) { throw new Exception("不能操作,数据已开票结束 ID:" + entityDts.DLOADDtsID + " " + entityIOF.ItemCode + " " + entityIOF.ColorNum); } if (entityDts.DInvoiceQty + entityIOF.InvoiceQty > entityIOF.DZQty || entityDts.DInvoiceAmount + entityIOF.InvoiceAmount > entityIOF.DZAmount)//开票溢出 { throw new Exception("不能操作,开票数超过对账数 或 开票金额超过对账金额 ID:" + entityDts.DLOADDtsID + " " + entityIOF.ItemCode + " " + entityIOF.ColorNum); } sql = "UPDATE WH_IOFormDts SET InvoiceQty=ISNULL(InvoiceQty,0)+" + "(" + SysString.ToDBString(entityDts.DInvoiceQty) + ")"; sql += ",InvoiceAmount=ISNULL(InvoiceAmount,0)+" + "(" + SysString.ToDBString(entityDts.DInvoiceAmount) + ")"; sql += ",DtsInvoiceDelOPID=" + SysString.ToDBString(entity.SaleOPID); sql += ",DtsInvoiceDelTime=" + SysString.ToDBString(entity.FormDate.ToString("yyyy-MM-dd")); sql += ",DtsInvoiceNo=" + SysString.ToDBString(entity.InvoiceNO); if (entityDts.DInvoiceAmount + entityIOF.InvoiceAmount >= entityIOF.DZAmount)//开票完成 { sql += ",DtsInvoiceDelFlag=1"; } else { sql += ",DtsInvoiceDelFlag=0"; } sql += " WHERE ID=" + SysString.ToDBString(entityDts.DLOADDtsID); sqlTrans.ExecuteNonQuery(sql); InvoiceOperationDtsRule dtsRule = new InvoiceOperationDtsRule(); entityDts.MainID = entity.ID; entityDts.Seq = SysConvert.ToInt32(sqlTrans.Fill("SELECT ISNULL(MAX(Seq),0)+1 FROM Finance_InvoiceOperationDts WHERE MainID=" + entity.ID).Rows[0][0]);//取最大的MAXSEQ值 dtsRule.RAdd(entityDts, sqlTrans); } catch (BaseException) { throw; } catch (Exception E) { throw new BaseException(E.Message); } }