/// <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> /// 提交 /// </summary> /// <param name="p_FormID"></param> /// <param name="p_Type"></param> /// <param name="sqlTrans"></param> private void SetInvoiceOperation(int p_FormID, int p_Type, IDBTransAccess sqlTrans) { string sql = "SELECT ID,MainID,Seq FROM Finance_InvoiceOperationDts WHERE MainID=" + SysString.ToDBString(p_FormID); sql += " ORDER BY Seq"; DataTable dt = sqlTrans.Fill(sql); if (dt.Rows.Count > 0) { foreach (DataRow dr in dt.Rows) { //对账单 InvoiceOperation entity = new InvoiceOperation(sqlTrans); entity.ID = p_FormID; entity.SelectByID(); ///对账单明细 InvoiceOperationDts entityDts = new InvoiceOperationDts(sqlTrans); entityDts.ID = SysConvert.ToInt32(dr["ID"]); entityDts.SelectByID(); ///仓库单据明细 IOFormDts entityIOF = new IOFormDts(sqlTrans); if (entityDts.MergeFlage == 1) { if (entityDts.DLOADID > 0) { IOForm entityNoDts = new IOForm(sqlTrans); entityNoDts.ID = entityDts.DLOADID; entityNoDts.SelectByID(); if (entityNoDts.SelectByID()) { } else { throw new Exception("操作异常,没有找到出入库记录 ID:" + entityDts.DLOADID); } if (p_Type == (int)YesOrNo.Yes)//提交 { //if (entityDts.DInvoiceQty + entityIOF.InvoiceQty > entityIOF.DZQty || entityDts.DInvoiceAmount + entityIOF.InvoiceAmount > entityIOF.DZAmount)//开票溢出 //{ // throw new Exception("不能操作,开票数超过对账数 或 开票金额超过对账金额 ID:" + entityDts.DLOADDtsID + " " + entityIOF.ItemCode + " " + entityIOF.ColorNum); //} if (entityNoDts.InvoiceDelFlag == (int)YesOrNo.Yes && entityNoDts.TotalQty == entityNoDts.InvoiceQty) { throw new Exception("不能操作,数据已开票结束 ID:" + entityDts.DLOADID); //+ " " + SysConvert.ToString(drs["ItemCode"]) + " " + SysConvert.ToString(drs["ColorNum"]) } sql = "UPDATE WH_IOForm SET InvoiceQty=ISNULL(InvoiceQty,0)+" + "(" + SysString.ToDBString(entityDts.DInvoiceQty) + ")"; sql += ",InvoiceAmount=ISNULL(InvoiceAmount,0)+" + "(" + SysString.ToDBString(SysConvert.ToDecimal(entityDts.DInvoiceAmount)) + ")"; sql += ",InvoiceDelOPID=" + SysString.ToDBString(entity.SaleOPID); sql += ",InvoiceDelTime=" + SysString.ToDBString(entity.FormDate.ToString("yyyy-MM-dd")); sql += ",InvoiceNo=" + SysString.ToDBString(entity.InvoiceNO); if (entityDts.DInvoiceAmount + entityNoDts.InvoiceAmount >= entityNoDts.DZAmount) //开票完成 { sql += ",InvoiceDelFlag=1"; } else { sql += ",InvoiceDelFlag=0"; } sql += " WHERE ID=" + SysString.ToDBString(entityNoDts.ID); sqlTrans.ExecuteNonQuery(sql); if (entityDts.DLoadCheckDtsID > 0) { sql = "UPDATE Finance_CheckOperationDts SET InvoiceFlag=1 WHERE ID=" + SysString.ToDBString(entityDts.DLoadCheckDtsID); sqlTrans.ExecuteNonQuery(sql); } } else//撤销提交 { if (entityNoDts.PayAmount != 0) { throw new Exception("不能操作,数据已有收付款数据 ID:" + entityDts.DLOADID); } sql = "UPDATE WH_IOForm SET InvoiceQty=ISNULL(InvoiceQty,0)-" + "(" + SysString.ToDBString(entityDts.DInvoiceQty) + ")"; sql += ",InvoiceAmount=ISNULL(InvoiceAmount,0)-" + "(" + SysString.ToDBString(entityDts.DInvoiceAmount) + ")"; sql += ",InvoiceDelOPID=" + SysString.ToDBString(entity.SaleOPID); sql += ",InvoiceDelTime=null"; sql += ",InvoiceNo=''"; if (entityNoDts.InvoiceQty == entityDts.DInvoiceQty) { sql += ",InvoiceDelFlag=0";//开票完成标志 } sql += " WHERE ID=" + SysString.ToDBString(entityNoDts.ID); sqlTrans.ExecuteNonQuery(sql); if (entityDts.DLoadCheckDtsID > 0) { sql = "UPDATE Finance_CheckOperationDts SET InvoiceFlag=0 WHERE ID=" + SysString.ToDBString(entityDts.DLoadCheckDtsID); sqlTrans.ExecuteNonQuery(sql); } } } else { if (p_Type == (int)YesOrNo.Yes)//提交 { if (entityDts.DLoadCheckDtsID > 0) { sql = "UPDATE Finance_CheckOperationDts SET InvoiceFlag=1 WHERE ID=" + SysString.ToDBString(entityDts.DLoadCheckDtsID); sqlTrans.ExecuteNonQuery(sql); } } else { if (entityDts.DLoadCheckDtsID > 0) { sql = "UPDATE Finance_CheckOperationDts SET InvoiceFlag=0 WHERE ID=" + SysString.ToDBString(entityDts.DLoadCheckDtsID); sqlTrans.ExecuteNonQuery(sql); } } } } else { entityIOF.ID = entityDts.DLOADDtsID; if (entityDts.DLOADDtsID > 0) { if (entityIOF.SelectByID()) { } else { throw new Exception("操作异常,没有找到出入库记录 ID:" + entityDts.DLOADDtsID); } if (p_Type == (int)YesOrNo.Yes)//提交 { if (entityIOF.DtsInvoiceDelFlag == (int)YesOrNo.Yes && entityIOF.Qty == entityIOF.InvoiceQty) { 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); if (entityDts.DLoadCheckDtsID > 0) { sql = "UPDATE Finance_CheckOperationDts SET InvoiceFlag=1 WHERE ID=" + SysString.ToDBString(entityDts.DLoadCheckDtsID); sqlTrans.ExecuteNonQuery(sql); } } else//撤销提交 { 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=''"; if (entityIOF.InvoiceQty == entityDts.DInvoiceQty) { sql += ",DtsInvoiceDelFlag=0";//开票完成标志 } sql += " WHERE ID=" + SysString.ToDBString(entityDts.DLOADDtsID); sqlTrans.ExecuteNonQuery(sql); if (entityDts.DLoadCheckDtsID > 0) { sql = "UPDATE Finance_CheckOperationDts SET InvoiceFlag=0 WHERE ID=" + SysString.ToDBString(entityDts.DLoadCheckDtsID); sqlTrans.ExecuteNonQuery(sql); } } } else { if (p_Type == (int)YesOrNo.Yes)//提交 { if (entityDts.DLoadCheckDtsID > 0) { sql = "UPDATE Finance_CheckOperationDts SET InvoiceFlag=1 WHERE ID=" + SysString.ToDBString(entityDts.DLoadCheckDtsID); sqlTrans.ExecuteNonQuery(sql); } } else { if (entityDts.DLoadCheckDtsID > 0) { sql = "UPDATE Finance_CheckOperationDts SET InvoiceFlag=0 WHERE ID=" + SysString.ToDBString(entityDts.DLoadCheckDtsID); sqlTrans.ExecuteNonQuery(sql); } } } } } } }