You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1515 lines
94 KiB
1515 lines
94 KiB
using ICSSoft.Common;
|
|
using ICSSoft.Entity;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace ICSSoft.DataProject
|
|
{
|
|
/// <summary>
|
|
/// 调拨单
|
|
/// </summary>
|
|
public class TransferDoc
|
|
{
|
|
private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
|
private static string connString = System.Configuration.ConfigurationManager.AppSettings["ERPConnStr"];
|
|
private static string ERPDB = System.Configuration.ConfigurationManager.AppSettings["ERPDB"];
|
|
private static string Type = System.Configuration.ConfigurationManager.AppSettings["Type"];
|
|
private static string CRNALL = System.Configuration.ConfigurationManager.AppSettings["TransDCRDNAME"];
|
|
/// <summary>
|
|
/// 审核调拨单
|
|
/// </summary>
|
|
/// <param name="Bills"></param>
|
|
/// <returns></returns>
|
|
public bool ConfirmTrans(List<ICSTransferDoc> Bills)
|
|
{
|
|
bool ResultFlag = false;
|
|
string connS = "";
|
|
//int num = 0;
|
|
SqlConnection conn = new SqlConnection();
|
|
SqlCommand cmd = new SqlCommand();
|
|
|
|
if (Bills.Count <= 0)
|
|
{
|
|
throw new Exception("传送数据为空!");
|
|
}
|
|
LogInfo(Bills);
|
|
List<string> result = Bills.Select(t => t.WorkPoint).Distinct().ToList();
|
|
|
|
|
|
foreach (string WorkPoint in result)
|
|
{
|
|
try
|
|
{
|
|
connS = string.Format(connString, WorkPoint);
|
|
conn = new System.Data.SqlClient.SqlConnection(connS);
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
foreach (ICSTransferDoc head in Bills)
|
|
{
|
|
if (WorkPoint != head.WorkPoint)
|
|
continue;
|
|
if (!DBHelper.IsInventoryConsolidation(cmd, head.WorkPoint))
|
|
throw new Exception("U8正在整理现存量,请稍后再试");
|
|
|
|
string[] ss = head.WorkPoint.Split('_');
|
|
ERPDB = ss[1];
|
|
string sql = "";
|
|
ICSUserInfo userInfo = new ICSUserInfo();
|
|
userInfo = DBHelper.GetPersonInfo(head.User, cmd);
|
|
string cIWhCode = string.Empty;
|
|
string cOWhCode = string.Empty;
|
|
#region 检查
|
|
sql = "select * from dbo.TransVouch where ID='" + head.ID + "';";
|
|
DataTable dtCheck = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dtCheck != null && dtCheck.Rows.Count > 0)
|
|
{
|
|
string cHandler = dtCheck.Rows[0]["cVerifyPerson"].ToString();
|
|
if (!string.IsNullOrEmpty(cHandler))
|
|
{
|
|
throw new Exception("调拨单ID:" + head.ID + "不是开立状态!");
|
|
}
|
|
cIWhCode = dtCheck.Rows[0]["cIWhCode"].ToString();
|
|
cOWhCode = dtCheck.Rows[0]["cOWhCode"].ToString();
|
|
sql = string.Format("select * from Warehouse where cWhCode in ('{0}','{1}')", dtCheck.Rows[0]["cOWhCode"].ToString(), dtCheck.Rows[0]["cIWhCode"].ToString());
|
|
DataTable dtWh = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dtWh != null && dtWh.Rows.Count > 1)
|
|
{
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("调拨单中转入或者转出仓库不存在!");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("调拨单ID:" + head.ID + "在U8中不存在!");
|
|
}
|
|
#endregion
|
|
|
|
#region 审核
|
|
sql = "UPDATE dbo.TransVouch SET cVerifyPerson='" + userInfo.UserName + "' ,dVerifyDate=CONVERT(VARCHAR(50),GETDATE(),112),dnverifytime=GETDATE() WHERE ID='" + head.ID + "'";
|
|
cmd.CommandText = sql;
|
|
try
|
|
{
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error("审核调拨单失败!异常:" + ex.Message + ";\r\n SQL:" + sql);
|
|
throw new Exception("程序异常,请联系开发人员!");
|
|
}
|
|
int bodyID = 0;
|
|
// foreach (ICSTransferDoc body in Bills)
|
|
// {
|
|
// //回写调出仓库待发数量
|
|
// string fOutcBatch = string.Empty;
|
|
// //bodyID = Convert.ToInt32(body);
|
|
// sql = @"UPDATE a SET fTransOutQuantity=ISNULL(a.fTransOutQuantity,0)-ISNULL(a.iQuantity,0)
|
|
// FROM dbo.CurrentStock a
|
|
// LEFT JOIN (SELECT a.cOWhCode,a.cIWhCode,b.cInvCode,b.autoID,
|
|
// ISNULL(b.cTVBatch,'') AS cTVBatch FROM dbo.TransVouch a
|
|
// INNER JOIN dbo.TransVouchs b ON a.cTVCode = b.cTVCode)b
|
|
// ON a.cInvCode=b.cInvCode AND a.cBatch=b.cTVBatch and a.cWhCode=b.cOWhCode WHERE b.autoID=@bodyID";
|
|
// cmd.Parameters.Clear();
|
|
// //cmd.Parameters.Add(new SqlParameter("@Qty", dtCheck.Rows[0]["iQuantity"].ToString()));
|
|
// cmd.Parameters.Add(new SqlParameter("@bodyID",body.ID));
|
|
// cmd.CommandText = sql;
|
|
// try
|
|
// {
|
|
// cmd.ExecuteNonQuery();
|
|
// }
|
|
// catch (Exception ex)
|
|
// {
|
|
// log.Error("回写现存量表 待调拨数量!异常:" + ex.Message + ";\r\n SQL:" + sql);
|
|
// throw new Exception("程序异常,请联系开发人员!");
|
|
// }
|
|
|
|
//// #region 判断现存量是否足够
|
|
//// sql = @"IF EXISTS(SELECT AutoID FROM dbo.CurrentStock WHERE iQuantity<0 OR iNum<0 OR fTransOutQuantity<0)
|
|
//// BEGIN
|
|
//// DECLARE @MSG NVARCHAR(100)
|
|
//// SELECT @MSG='ERP待调拨出库数量不足!AutoID:'+CAST(AutoID AS NVARCHAR(100)) FROM dbo.CurrentStock WHERE iQuantity<0 OR iNum<0 OR fTransOutQuantity<0
|
|
//// RAISERROR(@MSG,16,1)
|
|
//// END";
|
|
|
|
//// cmd.CommandText = sql;
|
|
//// cmd.ExecuteNonQuery();
|
|
//// #endregion
|
|
// //回写调入仓库在途数量
|
|
// fOutcBatch = string.Empty;
|
|
// sql = @"UPDATE a SET fTransInQuantity=ISNULL(fTransInQuantity,0)-ISNULL(a.iQuantity,0)
|
|
// FROM dbo.CurrentStock a
|
|
// LEFT JOIN (SELECT a.cOWhCode,a.cIWhCode,b.cInvCode,b.autoID,
|
|
// ISNULL(b.cTVBatch,'') AS cTVBatch FROM dbo.TransVouch a
|
|
// INNER JOIN dbo.TransVouchs b ON a.cTVCode = b.cTVCode)b
|
|
// ON a.cInvCode=b.cInvCode AND a.cBatch=b.cTVBatch and a.cWhCode=b.cIWhCode WHERE b.autoID=@bodyID";
|
|
// cmd.Parameters.Clear();
|
|
// //cmd.Parameters.Add(new SqlParameter("@Qty", dtCheck.Rows[0]["iQuantity"].ToString()));
|
|
// cmd.Parameters.Add(new SqlParameter("@bodyID", body.ID));
|
|
// cmd.CommandText = sql;
|
|
// try
|
|
// {
|
|
// cmd.ExecuteNonQuery();
|
|
// }
|
|
// catch (Exception ex)
|
|
// {
|
|
// log.Error("回写现存量表在途数量!异常:" + ex.Message + ";\r\n SQL:" + sql);
|
|
// throw new Exception("程序异常,请联系开发人员!");
|
|
// }
|
|
|
|
//// #region 判断现存量是否足够
|
|
//// sql = @"IF EXISTS(SELECT AutoID FROM dbo.CurrentStock WHERE iQuantity<0 OR iNum<0 OR fTransInQuantity<0)
|
|
//// BEGIN
|
|
//// DECLARE @MSG NVARCHAR(100)
|
|
//// SELECT @MSG='ERP待调拨入库数量不足!AutoID:'+CAST(AutoID AS NVARCHAR(100)) FROM dbo.CurrentStock WHERE iQuantity<0 OR iNum<0 OR fTransInQuantity<0
|
|
//// RAISERROR(@MSG,16,1)
|
|
//// END";
|
|
|
|
//// cmd.CommandText = sql;
|
|
//// cmd.ExecuteNonQuery();
|
|
//// #endregion
|
|
// }
|
|
#endregion
|
|
//0305 形态转换单CartonNum
|
|
sql = "select * from dbo.TransVouchs where ID='" + head.ID + "';";
|
|
DataTable dtChecks = DBHelper.SQlReturnData(sql, cmd);
|
|
#region 其他入库单
|
|
//取得out库单的默认显示模版
|
|
|
|
string[] dd = CRNALL.Split('~');
|
|
string crdname = dd[2];
|
|
string crdname1 = dd[3];
|
|
string carname = dd[4];
|
|
string carname1 = dd[5];
|
|
string surface = dd[6];
|
|
string cardnewcode = DBHelper.GetCardNumber(carname, cmd);
|
|
string cardnewcode1 = DBHelper.GetCardNumber(carname1, cmd);
|
|
|
|
VouchKey key08 = new VouchKey();
|
|
//key08 = U8Helper.GetPrimaryKey("rd", ErpName, 1, cmd);
|
|
//// 取得表头单据号
|
|
//string Code08 = U8Helper.GetRdrecord08Code(ErpName, "QR", cmd);
|
|
var num = dtChecks.Rows.Count;
|
|
Dictionary<string, int> dic = DBHelper.GetAllCode("" + ERPDB + "", surface, "" + num + "", head.WorkPoint);
|
|
int iFatherId = Convert.ToInt32(dic["iFatherId"].ToString());
|
|
int iChildId = Convert.ToInt32(dic["iChildId"].ToString());
|
|
DateTime date = DateTime.Now;
|
|
string cRDcode08 = DBHelper.GetRDCode(crdname1, cmd);
|
|
string iBaseCodeLen = DBHelper.GetAllRDCode(cardnewcode1, "" + date + "", "admin", cRDcode08, head.WorkPoint);
|
|
|
|
string DEF_ID08 = DBHelper.GetDefaultTemplate(cardnewcode1, cmd);
|
|
#region 其他入库单表头
|
|
sql = @"INSERT INTO dbo.RdRecord08
|
|
(ID,bRdFlag,cVouchType,cBusType,cSource,cBusCode,cWhCode,dDate,cCode,cRdCode,
|
|
cHandler,cMemo,bTransFlag,cMaker,dVeriDate,bpufirst,biafirst,VT_ID,bIsSTQc,bOMFirst,
|
|
bFromPreYear,bIsComplement,iDiscountTaxType,ireturncount,
|
|
iverifystate,iswfcontrolled,dnmaketime,dnverifytime,bredvouch,cSourceLs,cDepCode)
|
|
|
|
SELECT @ID,'1','08','调拨入库','调拨',a.cTVCode,cIWhCode,CONVERT(NVARCHAR(15),GETDATE(),23),a.cTVCode,@cRdCode,
|
|
@cHandler,@cMemo,'0',@cMaker,CONVERT(NVARCHAR(15),GETDATE(),23),'0','0',
|
|
@VT_ID,'0','0','0','0','0','0','0','0',GETDATE(),GETDATE(),'0','1',cIDepCode from dbo.TransVouch a WHERE ID='" + head.ID + "' ";
|
|
|
|
cmd.Parameters.Clear();
|
|
cmd.Parameters.Add(new SqlParameter("@ID", iFatherId));
|
|
//cmd.Parameters.Add(new SqlParameter("@cBusCode", head.ID));
|
|
|
|
cmd.Parameters.Add(new SqlParameter("@cCode", iBaseCodeLen));
|
|
cmd.Parameters.Add(new SqlParameter("@cHandler", userInfo.UserName));
|
|
cmd.Parameters.Add(new SqlParameter("@cMemo", ""));
|
|
cmd.Parameters.Add(new SqlParameter("@cMaker", userInfo.UserName));
|
|
cmd.Parameters.Add(new SqlParameter("@VT_ID", DEF_ID08));
|
|
cmd.Parameters.Add(new SqlParameter("@cRdCode", cRDcode08));
|
|
cmd.CommandText = sql;
|
|
try
|
|
{
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error("生成其他入库单表头失败!调拨单ID:" + head.ID + ";异常:" + ex.Message + ";SQL:\r\n" + sql);
|
|
throw new Exception("程序异常,请联系开发人员!");
|
|
}
|
|
#endregion
|
|
|
|
#region 3.5 其他入库单表体
|
|
for (int i = 0; i < dtChecks.Rows.Count; i++)
|
|
{
|
|
#region 3.5.1 表体
|
|
sql = @"INSERT INTO dbo.rdrecords08
|
|
(AutoID,ID,cInvCode,iQuantity,iSOutQuantity,iSOutNum,iFlag,iTrIds,iNQuantity,iNum,
|
|
cMassUnit,bLPUseFree,iRSRowNO,iOriTrackID,bCosting,bVMIUsed,iExpiratDateCalcu,iordertype,irowno,cbaccounter,cBatch,iPUnitCost,iPPrice,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10)
|
|
SELECT @AutoID,@ID,cInvCode,a.iTVQuantity,'0','0','0',a.AutoID,iTVQuantity,iTVNum,
|
|
'0','0','0','0','1','0','0','0',@irowno,null,cTVBatch,iTVPCost,iTVPPrice ,a.cFree1,a.cFree2,a.cFree3,a.cFree4,a.cFree5,a.cFree6,a.cFree7,a.cFree8,a.cFree9,a.cFree10
|
|
from TransVouchs a
|
|
inner join TransVouch b on a.ID=b.ID
|
|
where a.autoid='" + dtChecks.Rows[i]["AutoID"].ToString() + @"';";
|
|
|
|
cmd.Parameters.Clear();
|
|
cmd.Parameters.Add(new SqlParameter("@AutoID", iChildId));
|
|
cmd.Parameters.Add(new SqlParameter("@ID", iFatherId));
|
|
cmd.Parameters.Add(new SqlParameter("@irowno", dtChecks.Rows[i]["irowno"].ToString()));
|
|
cmd.CommandText = sql;
|
|
try
|
|
{
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error("生成其他出库单表体失败!调拨单ID:" + head.ID + ";异常:" + ex.Message + ";SQL:\r\n" + sql);
|
|
throw new Exception("程序异常,请联系开发人员!");
|
|
}
|
|
#endregion
|
|
|
|
//更新现存量
|
|
key08.cBustypeUN = "调拨入库";
|
|
key08.cVouchTypeUN = "08";
|
|
key08.TableName = "IA_ST_UnAccountVouch08";
|
|
key08.UpdateTodoQuantity = head.UpdateTodoQuantity;
|
|
//DBHelper.UpdateCurrentStockNEW(cmd, dtChecks.Rows[i]["cInvCode"].ToString(), cIWhCode, dtChecks.Rows[i]["cTVBatch"].ToString(), Convert.ToDecimal(dtChecks.Rows[i]["iTVQuantity"].ToString()), dtChecks.Rows[i]["cFree1"].ToString(), dtChecks.Rows[i]["cFree2"].ToString(), dtChecks.Rows[i]["cFree3"].ToString(), dtChecks.Rows[i]["cFree4"].ToString(), dtChecks.Rows[i]["cFree5"].ToString(), dtChecks.Rows[i]["cFree6"].ToString(), dtChecks.Rows[i]["cFree7"].ToString(), dtChecks.Rows[i]["cFree8"].ToString(), dtChecks.Rows[i]["cFree9"].ToString(), dtChecks.Rows[i]["cFree10"].ToString(), key08);
|
|
|
|
DBHelper.UpdateCurrentStockCCGC(cmd, dtChecks.Rows[i]["cInvCode"].ToString(), cIWhCode, dtChecks.Rows[i]["cTVBatch"].ToString(), Convert.ToDecimal(dtChecks.Rows[i]["iTVQuantity"].ToString()), Convert.ToDecimal(dtChecks.Rows[i]["iTVNum"].ToString()), dtChecks.Rows[i]["cFree1"].ToString(),
|
|
dtChecks.Rows[i]["cFree2"].ToString(), dtChecks.Rows[i]["cFree3"].ToString(), dtChecks.Rows[i]["cFree4"].ToString(), dtChecks.Rows[i]["cFree5"].ToString(), dtChecks.Rows[i]["cFree6"].ToString(), dtChecks.Rows[i]["cFree7"].ToString(), dtChecks.Rows[i]["cFree8"].ToString(), dtChecks.Rows[i]["cFree9"].ToString(), dtChecks.Rows[i]["cFree10"].ToString(),
|
|
"", key08, "", "", "", "", 0, 0, 0, 0, -Convert.ToDecimal(dtChecks.Rows[i]["iTVQuantity"].ToString()), -Convert.ToDecimal(dtChecks.Rows[i]["iTVNum"].ToString()), 0, 0, iFatherId, iChildId);
|
|
//DBHelper.UpdateCurrentStock(cmd, dtChecks.Rows[i]["cInvCode"].ToString(), cIWhCode, "", Convert.ToDecimal(dtChecks.Rows[i]["iTVQuantity"].ToString()), key08);
|
|
iChildId--;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
#region 其他出库单
|
|
|
|
|
|
//取得采购入库单单据 表头ID,表体DID
|
|
VouchKey key09 = new VouchKey();
|
|
//key09 = U8Helper.GetPrimaryKey("rd", ErpName, 1, cmd);
|
|
//// 取得表头单据号
|
|
//string Code09 = U8Helper.GetRdrecord09Code(ErpName, "QC", cmd);
|
|
var nums = dtChecks.Rows.Count;
|
|
Dictionary<string, int> dics = DBHelper.GetAllCode("" + ERPDB + "", surface, "" + nums + "", head.WorkPoint);
|
|
int iFatherIds = Convert.ToInt32(dics["iFatherId"].ToString());
|
|
int iChildIds = Convert.ToInt32(dics["iChildId"].ToString());
|
|
DateTime dates = DateTime.Now;
|
|
string cRDcode09 = DBHelper.GetRDCode(crdname, cmd);
|
|
string iBaseCodeLens = DBHelper.GetAllRDCode(cardnewcode, "" + date + "", "admin", cRDcode09, head.WorkPoint);
|
|
|
|
string DEF_ID09 = DBHelper.GetDefaultTemplate(cardnewcode, cmd);
|
|
#region 其他出库单表头
|
|
sql = @"INSERT INTO dbo.RdRecord09
|
|
(ID,bRdFlag,cVouchType,cBusType,cSource,cBusCode,cWhCode,dDate,cCode,cRdCode,
|
|
cHandler,cMemo,bTransFlag,cMaker,dVeriDate,bpufirst,biafirst,VT_ID,bIsSTQc,bOMFirst,
|
|
bFromPreYear,bIsComplement,iDiscountTaxType,ireturncount,
|
|
iverifystate,iswfcontrolled,dnmaketime,dnverifytime,bredvouch,cSourceLs,cDepCode)
|
|
|
|
SELECT @ID,'0','09','调拨出库','调拨',a.cTVCode,cOWhCode,CONVERT(NVARCHAR(15),GETDATE(),23),@cCode,@cRdCode,
|
|
@cHandler,@cMemo,'0',@cMaker,CONVERT(NVARCHAR(15),GETDATE(),23),'0','0',
|
|
'85','0','0','0','0','0','0','0','0',GETDATE(),GETDATE(),'0','1',cODepCode from dbo.TransVouch a WHERE ID='" + head.ID + "' ";
|
|
|
|
cmd.Parameters.Clear();
|
|
cmd.Parameters.Add(new SqlParameter("@ID", iFatherIds));
|
|
//cmd.Parameters.Add(new SqlParameter("@cBusCode", dtCheck.Rows[0]["cTVCode"].ToString()));
|
|
//cmd.Parameters.Add(new SqlParameter("@cWhCode", cOWhCode));
|
|
cmd.Parameters.Add(new SqlParameter("@cCode", iBaseCodeLens));
|
|
cmd.Parameters.Add(new SqlParameter("@cHandler", userInfo.UserName));
|
|
cmd.Parameters.Add(new SqlParameter("@cMemo", ""));
|
|
cmd.Parameters.Add(new SqlParameter("@cMaker", userInfo.UserName));
|
|
cmd.Parameters.Add(new SqlParameter("@VT_ID", DEF_ID09));
|
|
cmd.Parameters.Add(new SqlParameter("@cRdCode", cRDcode09));
|
|
cmd.CommandText = sql;
|
|
try
|
|
{
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error("生成其他出库单失败!调拨单ID:" + head.ID + ";异常:" + ex.Message + ";SQL:\r\n" + sql);
|
|
throw new Exception("程序异常,请联系开发人员!");
|
|
}
|
|
#endregion
|
|
|
|
#region 3.5 其他出库单表体
|
|
for (int i = 0; i < dtChecks.Rows.Count; i++)
|
|
{
|
|
#region 3.5.1 表体
|
|
|
|
//判断物料批号与现存量表批号是否一致、数量不能超过现存量物料数量
|
|
//sql = @"SELECT cBatch,iQuantity from CurrentStock WHERE cInvCode='" + dtCheck.Rows[0]["cInvCode"].ToString() + "'AND cWhCode='" + dtCheck.Rows[0]["cOWhCode"].ToString() + "'";
|
|
//DataTable dtItem = DBHelper.SQlReturnData(sql, cmd);
|
|
//if (dtItem != null && dtItem.Rows.Count > 0)
|
|
//{
|
|
// if (!dtItem.Rows[0]["cBatch"].ToString().Equals(body.cTVBatch))
|
|
// {
|
|
// throw new Exception("物料条码的批号与U8现存量物料批号不一致,物料:" + body.cInvCode);
|
|
// }
|
|
// if (Convert.ToDecimal(dtItem.Rows[0]["iQuantity"].ToString()) < body.iQuantity)
|
|
// {
|
|
// throw new Exception("物料条码的数量大于U8现存量物料数量,物料:" + body.cInvCode);
|
|
// }
|
|
|
|
//}
|
|
//else
|
|
//{
|
|
// throw new Exception("物料:" + body.cInvCode + "在现存量表中不存在!");
|
|
//}
|
|
//key09.DID += 1;
|
|
//Rd09irowno += 1;
|
|
sql = @"INSERT INTO dbo.rdrecords09
|
|
(AutoID,ID,cInvCode,iQuantity,iSOutQuantity,iSOutNum,iFlag,iTrIds,iNQuantity,iNum,
|
|
cMassUnit,bLPUseFree,iRSRowNO,iOriTrackID,bCosting,bVMIUsed,iExpiratDateCalcu,iordertype,irowno,cbaccounter,cBatch,iPUnitCost,iPPrice,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10)
|
|
SELECT @AutoID,@ID,cInvCode,a.iTVQuantity,'0','0','0',a.AutoID,iTVQuantity,iTVNum,
|
|
'0','0','0','0','1','0','0','0',a.irowno,null,cTVBatch,iTVPCost,iTVPPrice ,a.cFree1,a.cFree2,a.cFree3,a.cFree4,a.cFree5,a.cFree6,a.cFree7,a.cFree8,a.cFree9,a.cFree10
|
|
from TransVouchs a
|
|
inner join TransVouch b on a.ID=b.ID
|
|
where a.autoid='" + dtChecks.Rows[i]["AutoID"].ToString() + @"' ;";
|
|
|
|
cmd.Parameters.Clear();
|
|
cmd.Parameters.Add(new SqlParameter("@AutoID", iChildIds));
|
|
cmd.Parameters.Add(new SqlParameter("@ID", iFatherIds));
|
|
|
|
|
|
cmd.CommandText = sql;
|
|
try
|
|
{
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error("生成其他出库单表体失败!调拨单ID:" + head.ID + ";异常:" + ex.Message + ";SQL:\r\n" + sql);
|
|
throw new Exception("程序异常,请联系开发人员!");
|
|
}
|
|
|
|
sql = @"INSERT INTO dbo.rdrecords09sub
|
|
( AutoID , ID ,iBG_Ctrl , iBGSTSum )
|
|
values('" + iChildIds + "','" + iFatherIds + "',0,0)";
|
|
cmd.CommandText = sql;
|
|
cmd.ExecuteNonQuery();
|
|
#endregion
|
|
if (head.UpdateStock)
|
|
{
|
|
//更新现存量
|
|
key09.cBustypeUN = "调拨出库";
|
|
key09.cVouchTypeUN = "09";
|
|
key09.TableName = "IA_ST_UnAccountVouch09";
|
|
//DBHelper.UpdateCurrentStock(cmd, dtChecks.Rows[i]["cInvCode"].ToString(), cOWhCode, "", -Convert.ToDecimal(dtChecks.Rows[i]["iTVQuantity"].ToString()), key09);
|
|
//DBHelper.UpdateCurrentStockNEW(cmd, dtChecks.Rows[i]["cInvCode"].ToString(), cOWhCode, dtChecks.Rows[i]["cTVBatch"].ToString(), -Convert.ToDecimal(dtChecks.Rows[i]["iTVQuantity"].ToString()), dtChecks.Rows[i]["cFree1"].ToString(), dtChecks.Rows[i]["cFree2"].ToString(), dtChecks.Rows[i]["cFree3"].ToString(), dtChecks.Rows[i]["cFree4"].ToString(), dtChecks.Rows[i]["cFree5"].ToString(), dtChecks.Rows[i]["cFree6"].ToString(), dtChecks.Rows[i]["cFree7"].ToString(), dtChecks.Rows[i]["cFree8"].ToString(), dtChecks.Rows[i]["cFree9"].ToString(), dtChecks.Rows[i]["cFree10"].ToString(), key09);
|
|
DBHelper.UpdateCurrentStockCCGC(cmd, dtChecks.Rows[i]["cInvCode"].ToString(), cOWhCode, dtChecks.Rows[i]["cTVBatch"].ToString(), -Convert.ToDecimal(dtChecks.Rows[i]["iTVQuantity"].ToString()), -Convert.ToDecimal(dtChecks.Rows[i]["iTVNum"].ToString()), dtChecks.Rows[i]["cFree1"].ToString(),
|
|
dtChecks.Rows[i]["cFree2"].ToString(), dtChecks.Rows[i]["cFree3"].ToString(), dtChecks.Rows[i]["cFree4"].ToString(), dtChecks.Rows[i]["cFree5"].ToString(), dtChecks.Rows[i]["cFree6"].ToString(), dtChecks.Rows[i]["cFree7"].ToString(), dtChecks.Rows[i]["cFree8"].ToString(), dtChecks.Rows[i]["cFree9"].ToString(), dtChecks.Rows[i]["cFree10"].ToString(),
|
|
"", key09, "", "", "", "", 0, 0, 0, 0, 0, 0, -Convert.ToDecimal(dtChecks.Rows[i]["iTVQuantity"].ToString()), -Convert.ToDecimal(dtChecks.Rows[i]["iTVNum"].ToString()), iFatherIds, iChildIds);
|
|
}
|
|
iChildIds--;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
}
|
|
cmd.Transaction.Commit();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
|
|
}
|
|
ResultFlag = true;
|
|
return ResultFlag;
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 生成无源头调拨单
|
|
/// </summary>
|
|
/// <param name="Bills"></param>
|
|
/// <returns></returns>
|
|
public string ConfirmTransIN(List<ICSTransfer> Bills)
|
|
{
|
|
|
|
string connS = "";
|
|
string szJson = "";
|
|
|
|
|
|
DataSet ds = null;
|
|
string iFatherIdTwo = "";
|
|
SqlConnection conn = new SqlConnection();
|
|
SqlCommand cmd = new SqlCommand();
|
|
|
|
if (Bills.Count <= 0)
|
|
{
|
|
throw new Exception("传送数据为空!");
|
|
}
|
|
LogInfo1(Bills);
|
|
//MergeObject(Bills, cmd);
|
|
|
|
List<string> result = Bills.Select(t => t.WorkPoint).Distinct().ToList();
|
|
|
|
|
|
foreach (string WorkPoint in result)
|
|
{
|
|
try
|
|
{
|
|
connS = string.Format(connString, WorkPoint);
|
|
conn = new System.Data.SqlClient.SqlConnection(connS);
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
foreach (ICSTransfer head in Bills)
|
|
{
|
|
iFatherIdTwo = "";
|
|
if (WorkPoint != head.WorkPoint)
|
|
continue;
|
|
if (!DBHelper.IsInventoryConsolidation(cmd, head.WorkPoint))
|
|
throw new Exception("U8正在整理现存量,请稍后再试");
|
|
|
|
string[] ss = head.WorkPoint.Split('_');
|
|
ERPDB = ss[1];
|
|
|
|
|
|
string[] dd = CRNALL.Split('~');
|
|
string crdname = dd[2];
|
|
string crdname1 = dd[3];
|
|
string carname = dd[4];
|
|
string carname1 = dd[5];
|
|
string surface = dd[6];
|
|
string carname2 = dd[0];
|
|
string surface1 = dd[1];
|
|
string cardnewcode = DBHelper.GetCardNumber(carname, cmd);
|
|
string cardnewcode1 = DBHelper.GetCardNumber(carname1, cmd);
|
|
string cardnewcode2 = DBHelper.GetCardNumber(carname2, cmd);
|
|
int num = 0;
|
|
foreach (ICSTransfer nu in Bills)
|
|
{
|
|
num = head.details.Count();
|
|
}
|
|
|
|
string sql = "";
|
|
ICSUserInfo userInfo = new ICSUserInfo();
|
|
userInfo = DBHelper.GetPersonInfo(head.User, cmd);
|
|
string cIWhCode = string.Empty;
|
|
string cOWhCode = string.Empty;
|
|
#region 调拨单
|
|
|
|
|
|
Dictionary<string, int> dic1 = DBHelper.GetAllCode("" + ERPDB + "", surface1, "" + num + "", head.WorkPoint);
|
|
int iFather = Convert.ToInt32(dic1["iFatherId"].ToString());
|
|
int iChild = Convert.ToInt32(dic1["iChildId"].ToString());
|
|
DateTime date = DateTime.Now;
|
|
string iBaseCode = DBHelper.GetAllRDCode(cardnewcode2, "" + date + "", "admin", "", head.WorkPoint);
|
|
string cRDcode2 = DBHelper.GetRDCode(crdname, cmd);
|
|
string cRDcode1 = DBHelper.GetRDCode(crdname1, cmd);
|
|
string DEF_ID = DBHelper.GetDefaultTemplate(cardnewcode2, cmd);
|
|
|
|
|
|
|
|
sql = @"INSERT INTO dbo.TransVouch
|
|
(cTVCode,dTVDate,cOWhCode,cIWhCode,cODepCode,cIDepCode,cIRdCode,cORdCode,cMaker,ID
|
|
,VT_ID,itransflag,dnmaketime
|
|
,iswfcontrolled,iPrintCount)
|
|
SELECT @cTVCode,CONVERT(NVARCHAR(15),GETDATE(),23),@cOWhCode,@cIWhCode,@cODepCode,@cIDepCode,@cIRdCode,@cORdCode,@cMaker,@ID
|
|
,@VT_ID,'正向',GETDATE()
|
|
,0,0
|
|
|
|
";
|
|
cmd.Parameters.Clear();
|
|
cmd.Parameters.Add(new SqlParameter("@ID", iFather));
|
|
cmd.Parameters.Add(new SqlParameter("@cTVCode", iBaseCode));
|
|
cmd.Parameters.Add(new SqlParameter("@cMaker", userInfo.UserName));
|
|
cmd.Parameters.Add(new SqlParameter("@VT_ID", DEF_ID));
|
|
cmd.Parameters.Add(new SqlParameter("@cIRdCode", cRDcode1));
|
|
cmd.Parameters.Add(new SqlParameter("@cORdCode", cRDcode2));
|
|
cmd.Parameters.Add(new SqlParameter("@cOWhCode", head.FromWHCode));
|
|
cmd.Parameters.Add(new SqlParameter("@cIWhCode", head.ToWHCode));
|
|
cmd.Parameters.Add(new SqlParameter("@cODepCode", head.FromDepCode));
|
|
cmd.Parameters.Add(new SqlParameter("@cIDepCode", head.ToDepCode));
|
|
cmd.CommandText = sql;
|
|
try
|
|
{
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error("生成调拨单表头失败!调拨单:" + iBaseCode + ";异常:" + ex.Message + ";SQL:\r\n" + sql);
|
|
throw new Exception("程序异常,请联系开发人员!");
|
|
}
|
|
iFatherIdTwo = "'" + iFather + "',";
|
|
foreach (ICSTransfers body in head.details)
|
|
{
|
|
if (DBHelper.bInvBatch(body.InvCode, cmd) == true)
|
|
{
|
|
if (body.BatchCode == "")
|
|
{
|
|
log.Error("该物料:" + body.InvCode + "已启用批次,请重新填写!");
|
|
throw new Exception("该物料:" + body.InvCode + "已启用批次,请重新填写!");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (body.BatchCode != "")
|
|
{
|
|
log.Error("该物料:" + body.InvCode + "未启用批次,请重新填写!");
|
|
throw new Exception("该物料:" + body.InvCode + "未启用批次,请重新填写!");
|
|
}
|
|
}
|
|
sql = @" INSERT INTO dbo.TransVouchs
|
|
(cTVCode,cInvCode,iTVNum,iTVQuantity,cTVBatch,autoID,ID,bCosting,cItemCode
|
|
,iExpiratDateCalcu,irowno,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10)
|
|
SELECT @cTVCode,@cInvCode,@iTVNum,@iTVQuantity,@cTVBatch,@autoID,@ID,1,@cItemCode
|
|
,0,@irowno,@cFree1,@cFree2,@cFree3,@cFree4,@cFree5,@cFree6,@cFree7,@cFree8,@cFree9,@cFree10
|
|
";
|
|
cmd.Parameters.Clear();
|
|
cmd.Parameters.Add(new SqlParameter("@ID", iFather));
|
|
cmd.Parameters.Add(new SqlParameter("@cTVCode", iBaseCode));
|
|
cmd.Parameters.Add(new SqlParameter("@autoID", iChild));
|
|
cmd.Parameters.Add(new SqlParameter("@cInvCode", body.InvCode));
|
|
cmd.Parameters.Add(new SqlParameter("@iTVNum", body.Amount.ToString("0.00")));
|
|
cmd.Parameters.Add(new SqlParameter("@iTVQuantity", body.Quantity));
|
|
cmd.Parameters.Add(new SqlParameter("@irowno", body.Sequence));
|
|
cmd.Parameters.Add(new SqlParameter("@cTVBatch", body.BatchCode));
|
|
cmd.Parameters.Add(new SqlParameter("@cItemCode", body.ProjectCode));
|
|
cmd.Parameters.Add(new SqlParameter("@cFree1", body.cFree1));
|
|
cmd.Parameters.Add(new SqlParameter("@cFree2", body.cFree2));
|
|
cmd.Parameters.Add(new SqlParameter("@cFree3", body.cFree3));
|
|
cmd.Parameters.Add(new SqlParameter("@cFree4", body.cFree4));
|
|
cmd.Parameters.Add(new SqlParameter("@cFree5", body.cFree5));
|
|
cmd.Parameters.Add(new SqlParameter("@cFree6", body.cFree6));
|
|
cmd.Parameters.Add(new SqlParameter("@cFree7", body.cFree7));
|
|
cmd.Parameters.Add(new SqlParameter("@cFree8", body.cFree8));
|
|
cmd.Parameters.Add(new SqlParameter("@cFree9", body.cFree9));
|
|
cmd.Parameters.Add(new SqlParameter("@cFree10", body.cFree10));
|
|
cmd.CommandText = sql;
|
|
iChild--;
|
|
try
|
|
{
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error("生成调拨单子表失败!调拨单:" + iBaseCode + ",行:" + body.Sequence + ";异常:" + ex.Message + ";SQL:\r\n" + sql);
|
|
throw new Exception("程序异常,请联系开发人员!");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region 检查
|
|
sql = "select * from dbo.TransVouch where ID='" + iFather + "';";
|
|
DataTable dtCheck = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dtCheck != null && dtCheck.Rows.Count > 0)
|
|
{
|
|
string cHandler = dtCheck.Rows[0]["cVerifyPerson"].ToString();
|
|
if (!string.IsNullOrEmpty(cHandler))
|
|
{
|
|
throw new Exception("调拨单:" + iBaseCode + "不是开立状态!");
|
|
}
|
|
cIWhCode = dtCheck.Rows[0]["cIWhCode"].ToString();
|
|
cOWhCode = dtCheck.Rows[0]["cOWhCode"].ToString();
|
|
sql = string.Format("select * from Warehouse where cWhCode in ('{0}','{1}')", dtCheck.Rows[0]["cOWhCode"].ToString(), dtCheck.Rows[0]["cIWhCode"].ToString());
|
|
DataTable dtWh = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dtWh != null && dtWh.Rows.Count > 1)
|
|
{
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("调拨单中转入或者转出仓库不存在!");
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("调拨单:" + iBaseCode + "在U8中不存在!");
|
|
}
|
|
#endregion
|
|
|
|
#region 审核
|
|
sql = "UPDATE dbo.TransVouch SET cVerifyPerson='" + userInfo.UserName + "' ,dVerifyDate=CONVERT(VARCHAR(50),GETDATE(),112),dnverifytime=GETDATE() WHERE cTVCode='" + iBaseCode + "'";
|
|
cmd.CommandText = sql;
|
|
try
|
|
{
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error("审核调拨单失败!异常:" + ex.Message + ";\r\n SQL:" + sql);
|
|
throw new Exception("程序异常,请联系开发人员!");
|
|
}
|
|
int bodyID = 0;
|
|
|
|
#endregion
|
|
|
|
sql = "select * from dbo.TransVouchs where ID='" + iFather + "';";
|
|
DataTable dtChecks = DBHelper.SQlReturnData(sql, cmd);
|
|
#region 其他入库单
|
|
//取得out库单的默认显示模版
|
|
|
|
|
|
VouchKey key08 = new VouchKey();
|
|
|
|
num = dtChecks.Rows.Count;
|
|
Dictionary<string, int> dic = DBHelper.GetAllCode("" + ERPDB + "", surface, "" + num + "", head.WorkPoint);
|
|
int iFatherId = Convert.ToInt32(dic["iFatherId"].ToString());
|
|
int iChildId = Convert.ToInt32(dic["iChildId"].ToString());
|
|
DateTime date1 = DateTime.Now;
|
|
string cRDcode08 = DBHelper.GetRDCode(crdname1, cmd);
|
|
string iBaseCodeLen = DBHelper.GetAllRDCode(cardnewcode1, "" + date1 + "", "admin", cRDcode08, head.WorkPoint);
|
|
|
|
string DEF_ID08 = DBHelper.GetDefaultTemplate(cardnewcode1, cmd);
|
|
#region 其他入库单表头
|
|
sql = @"INSERT INTO dbo.RdRecord08
|
|
(ID,bRdFlag,cVouchType,cBusType,cSource,cBusCode,cWhCode,dDate,cCode,cRdCode,
|
|
cHandler,cMemo,bTransFlag,cMaker,dVeriDate,bpufirst,biafirst,VT_ID,bIsSTQc,bOMFirst,
|
|
bFromPreYear,bIsComplement,iDiscountTaxType,ireturncount,
|
|
iverifystate,iswfcontrolled,dnmaketime,dnverifytime,bredvouch,cSourceLs,cDepCode)
|
|
|
|
SELECT @ID,'1','08','调拨入库','调拨',a.cTVCode,cIWhCode,CONVERT(NVARCHAR(15),GETDATE(),23),a.cTVCode,@cRdCode,
|
|
@cHandler,@cMemo,'0',@cMaker,CONVERT(NVARCHAR(15),GETDATE(),23),'0','0',
|
|
@VT_ID,'0','0','0','0','0','0','0','0',GETDATE(),GETDATE(),'0','1',cIDepCode
|
|
from dbo.TransVouch a WHERE cTVCode='" + iBaseCode + "' ";
|
|
|
|
cmd.Parameters.Clear();
|
|
cmd.Parameters.Add(new SqlParameter("@ID", iFatherId));
|
|
//cmd.Parameters.Add(new SqlParameter("@cBusCode", head.ID));
|
|
|
|
cmd.Parameters.Add(new SqlParameter("@cCode", iBaseCodeLen));
|
|
cmd.Parameters.Add(new SqlParameter("@cHandler", userInfo.UserName));
|
|
cmd.Parameters.Add(new SqlParameter("@cMemo", ""));
|
|
cmd.Parameters.Add(new SqlParameter("@cMaker", userInfo.UserName));
|
|
cmd.Parameters.Add(new SqlParameter("@VT_ID", DEF_ID08));
|
|
cmd.Parameters.Add(new SqlParameter("@cRdCode", cRDcode08));
|
|
cmd.CommandText = sql;
|
|
try
|
|
{
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error("生成其他入库单表头失败!调拨单:" + iBaseCode + ";异常:" + ex.Message + ";SQL:\r\n" + sql);
|
|
throw new Exception("程序异常,请联系开发人员!");
|
|
}
|
|
#endregion
|
|
|
|
#region 3.5 其他入库单表体
|
|
for (int i = 0; i < dtChecks.Rows.Count; i++)
|
|
{
|
|
#region 3.5.1 表体
|
|
sql = @"INSERT INTO dbo.rdrecords08
|
|
(AutoID,ID,cInvCode,iQuantity,iSOutQuantity,iSOutNum,iFlag,iTrIds,iNQuantity,iNum,cItemCode,
|
|
cMassUnit,bLPUseFree,iRSRowNO,iOriTrackID,bCosting,bVMIUsed,iExpiratDateCalcu,iordertype,irowno,cbaccounter,cBatch,iPUnitCost,iPPrice,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10)
|
|
SELECT @AutoID,@ID,cInvCode,a.iTVQuantity,'0','0','0',a.AutoID,iTVQuantity,iTVNum,a.cItemCode,
|
|
'0','0','0','0','1','0','0','0',a.irowno,null,cTVBatch,iTVPCost,iTVPPrice ,a.cFree1,a.cFree2,a.cFree3,a.cFree4,a.cFree5,a.cFree6,a.cFree7,a.cFree8,a.cFree9,a.cFree10
|
|
from TransVouchs a
|
|
inner join TransVouch b on a.ID=b.ID
|
|
where a.autoid='" + dtChecks.Rows[i]["AutoID"].ToString() + @"';";
|
|
|
|
cmd.Parameters.Clear();
|
|
cmd.Parameters.Add(new SqlParameter("@AutoID", iChildId));
|
|
cmd.Parameters.Add(new SqlParameter("@ID", iFatherId));
|
|
|
|
cmd.CommandText = sql;
|
|
try
|
|
{
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error("生成其他出库单表体失败!调拨单:" + iBaseCode + ";异常:" + ex.Message + ";SQL:\r\n" + sql);
|
|
throw new Exception("程序异常,请联系开发人员!");
|
|
}
|
|
#endregion
|
|
|
|
//更新现存量
|
|
key08.cBustypeUN = "调拨入库";
|
|
key08.cVouchTypeUN = "08";
|
|
key08.TableName = "IA_ST_UnAccountVouch08";
|
|
key08.UpdateTodoQuantity = head.UpdateTodoQuantity;
|
|
//DBHelper.UpdateCurrentStockNEW(cmd, dtChecks.Rows[i]["cInvCode"].ToString(), cIWhCode, dtChecks.Rows[i]["cTVBatch"].ToString(), Convert.ToDecimal(dtChecks.Rows[i]["iTVQuantity"].ToString()), dtChecks.Rows[i]["cFree1"].ToString(), dtChecks.Rows[i]["cFree2"].ToString(), dtChecks.Rows[i]["cFree3"].ToString(), dtChecks.Rows[i]["cFree4"].ToString(), dtChecks.Rows[i]["cFree5"].ToString(), dtChecks.Rows[i]["cFree6"].ToString(), dtChecks.Rows[i]["cFree7"].ToString(), dtChecks.Rows[i]["cFree8"].ToString(), dtChecks.Rows[i]["cFree9"].ToString(), dtChecks.Rows[i]["cFree10"].ToString(), key08);
|
|
DBHelper.UpdateCurrentStockCCGC(cmd, dtChecks.Rows[i]["cInvCode"].ToString(), cIWhCode, dtChecks.Rows[i]["cTVBatch"].ToString(), Convert.ToDecimal(dtChecks.Rows[i]["iTVQuantity"].ToString()), Convert.ToDecimal(dtChecks.Rows[i]["iTVNum"].ToString()), dtChecks.Rows[i]["cFree1"].ToString(),
|
|
dtChecks.Rows[i]["cFree2"].ToString(), dtChecks.Rows[i]["cFree3"].ToString(), dtChecks.Rows[i]["cFree4"].ToString(), dtChecks.Rows[i]["cFree5"].ToString(), dtChecks.Rows[i]["cFree6"].ToString(), dtChecks.Rows[i]["cFree7"].ToString(), dtChecks.Rows[i]["cFree8"].ToString(), dtChecks.Rows[i]["cFree9"].ToString(), dtChecks.Rows[i]["cFree10"].ToString(),
|
|
"", key08, "", "", "", "", 0, 0, 0, 0, 0, 0, 0, 0, iFatherId, iChildId);
|
|
//DBHelper.UpdateCurrentStock(cmd, dtChecks.Rows[i]["cInvCode"].ToString(), cIWhCode, "", Convert.ToDecimal(dtChecks.Rows[i]["iTVQuantity"].ToString()), key08);
|
|
iChildId--;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
#region 其他出库单
|
|
|
|
|
|
//取得采购入库单单据 表头ID,表体DID
|
|
VouchKey key09 = new VouchKey();
|
|
//key09 = U8Helper.GetPrimaryKey("rd", ErpName, 1, cmd);
|
|
//// 取得表头单据号
|
|
//string Code09 = U8Helper.GetRdrecord09Code(ErpName, "QC", cmd);
|
|
var nums = dtChecks.Rows.Count + num;
|
|
Dictionary<string, int> dics = DBHelper.GetAllCode("" + ERPDB + "", surface, "" + nums + "", head.WorkPoint);
|
|
int iFatherIds = Convert.ToInt32(dics["iFatherId"].ToString());
|
|
int iChildIds = Convert.ToInt32(dics["iChildId"].ToString());
|
|
DateTime dates = DateTime.Now;
|
|
string cRDcode09 = DBHelper.GetRDCode(crdname, cmd);
|
|
string iBaseCodeLens = DBHelper.GetAllRDCode(cardnewcode, "" + date + "", "admin", cRDcode09, head.WorkPoint);
|
|
|
|
string DEF_ID09 = DBHelper.GetDefaultTemplate(cardnewcode, cmd);
|
|
#region 其他出库单表头
|
|
sql = @"INSERT INTO dbo.RdRecord09
|
|
(ID,bRdFlag,cVouchType,cBusType,cSource,cBusCode,cWhCode,dDate,cCode,cRdCode,
|
|
cHandler,cMemo,bTransFlag,cMaker,dVeriDate,bpufirst,biafirst,VT_ID,bIsSTQc,bOMFirst,
|
|
bFromPreYear,bIsComplement,iDiscountTaxType,ireturncount,
|
|
iverifystate,iswfcontrolled,dnmaketime,dnverifytime,bredvouch,cSourceLs,cDepCode)
|
|
|
|
SELECT @ID,'0','09','调拨出库','调拨',a.cTVCode,cOWhCode,CONVERT(NVARCHAR(15),GETDATE(),23),@cCode,@cRdCode,
|
|
@cHandler,@cMemo,'0',@cMaker,CONVERT(NVARCHAR(15),GETDATE(),23),'0','0',
|
|
'85','0','0','0','0','0','0','0','0',GETDATE(),GETDATE(),'0','1',cODepCode
|
|
from dbo.TransVouch a WHERE cTVCode='" + iBaseCode + "' ";
|
|
|
|
cmd.Parameters.Clear();
|
|
cmd.Parameters.Add(new SqlParameter("@ID", iFatherIds));
|
|
//cmd.Parameters.Add(new SqlParameter("@cBusCode", dtCheck.Rows[0]["cTVCode"].ToString()));
|
|
//cmd.Parameters.Add(new SqlParameter("@cWhCode", cOWhCode));
|
|
cmd.Parameters.Add(new SqlParameter("@cCode", iBaseCodeLens));
|
|
cmd.Parameters.Add(new SqlParameter("@cHandler", userInfo.UserName));
|
|
cmd.Parameters.Add(new SqlParameter("@cMemo", ""));
|
|
cmd.Parameters.Add(new SqlParameter("@cMaker", userInfo.UserName));
|
|
cmd.Parameters.Add(new SqlParameter("@VT_ID", DEF_ID09));
|
|
cmd.Parameters.Add(new SqlParameter("@cRdCode", cRDcode09));
|
|
cmd.CommandText = sql;
|
|
try
|
|
{
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error("生成其他出库单失败!调拨单:" + iBaseCode + ";异常:" + ex.Message + ";SQL:\r\n" + sql);
|
|
throw new Exception("程序异常,请联系开发人员!");
|
|
}
|
|
#endregion
|
|
|
|
#region 3.5 其他出库单表体
|
|
for (int i = 0; i < dtChecks.Rows.Count; i++)
|
|
{
|
|
#region 3.5.1 表体
|
|
|
|
//判断物料批号与现存量表批号是否一致、数量不能超过现存量物料数量
|
|
//sql = @"SELECT cBatch,iQuantity from CurrentStock WHERE cInvCode='" + dtCheck.Rows[0]["cInvCode"].ToString() + "'AND cWhCode='" + dtCheck.Rows[0]["cOWhCode"].ToString() + "'";
|
|
//DataTable dtItem = DBHelper.SQlReturnData(sql, cmd);
|
|
//if (dtItem != null && dtItem.Rows.Count > 0)
|
|
//{
|
|
// if (!dtItem.Rows[0]["cBatch"].ToString().Equals(body.cTVBatch))
|
|
// {
|
|
// throw new Exception("物料条码的批号与U8现存量物料批号不一致,物料:" + body.cInvCode);
|
|
// }
|
|
// if (Convert.ToDecimal(dtItem.Rows[0]["iQuantity"].ToString()) < body.iQuantity)
|
|
// {
|
|
// throw new Exception("物料条码的数量大于U8现存量物料数量,物料:" + body.cInvCode);
|
|
// }
|
|
|
|
//}
|
|
//else
|
|
//{
|
|
// throw new Exception("物料:" + body.cInvCode + "在现存量表中不存在!");
|
|
//}
|
|
//key09.DID += 1;
|
|
//Rd09irowno += 1;
|
|
sql = @"INSERT INTO dbo.rdrecords09
|
|
(AutoID,ID,cInvCode,iQuantity,iSOutQuantity,iSOutNum,iFlag,iTrIds,iNQuantity,iNum,cItemCode,
|
|
cMassUnit,bLPUseFree,iRSRowNO,iOriTrackID,bCosting,bVMIUsed,iExpiratDateCalcu,iordertype,irowno,cbaccounter,cBatch,iPUnitCost,iPPrice,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10)
|
|
SELECT @AutoID,@ID,cInvCode,a.iTVQuantity,'0','0','0',a.AutoID,iTVQuantity,iTVNum,a.cItemCode,
|
|
'0','0','0','0','1','0','0','0',a.irowno,null,cTVBatch,iTVPCost,iTVPPrice ,a.cFree1,a.cFree2,a.cFree3,a.cFree4,a.cFree5,a.cFree6,a.cFree7,a.cFree8,a.cFree9,a.cFree10
|
|
from TransVouchs a
|
|
inner join TransVouch b on a.ID=b.ID
|
|
where a.autoid='" + dtChecks.Rows[i]["AutoID"].ToString() + @"' ;";
|
|
|
|
cmd.Parameters.Clear();
|
|
cmd.Parameters.Add(new SqlParameter("@AutoID", iChildIds));
|
|
cmd.Parameters.Add(new SqlParameter("@ID", iFatherIds));
|
|
|
|
|
|
cmd.CommandText = sql;
|
|
try
|
|
{
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error("生成其他出库单表体失败!调拨单:" + iBaseCode + ";异常:" + ex.Message + ";SQL:\r\n" + sql);
|
|
throw new Exception("程序异常,请联系开发人员!");
|
|
}
|
|
|
|
sql = @"INSERT INTO dbo.rdrecords09sub
|
|
( AutoID , ID ,iBG_Ctrl , iBGSTSum )
|
|
values('" + iChildIds + "','" + iFatherIds + "',0,0)";
|
|
cmd.CommandText = sql;
|
|
cmd.ExecuteNonQuery();
|
|
#endregion
|
|
|
|
//更新现存量
|
|
key09.cBustypeUN = "调拨出库";
|
|
key09.cVouchTypeUN = "09";
|
|
key09.TableName = "IA_ST_UnAccountVouch09";
|
|
//DBHelper.UpdateCurrentStock(cmd, dtChecks.Rows[i]["cInvCode"].ToString(), cOWhCode, "", -Convert.ToDecimal(dtChecks.Rows[i]["iTVQuantity"].ToString()), key09);
|
|
//DBHelper.UpdateCurrentStockNEW(cmd, dtChecks.Rows[i]["cInvCode"].ToString(), cOWhCode, dtChecks.Rows[i]["cTVBatch"].ToString(), -Convert.ToDecimal(dtChecks.Rows[i]["iTVQuantity"].ToString()), dtChecks.Rows[i]["cFree1"].ToString(), dtChecks.Rows[i]["cFree2"].ToString(), dtChecks.Rows[i]["cFree3"].ToString(), dtChecks.Rows[i]["cFree4"].ToString(), dtChecks.Rows[i]["cFree5"].ToString(), dtChecks.Rows[i]["cFree6"].ToString(), dtChecks.Rows[i]["cFree7"].ToString(), dtChecks.Rows[i]["cFree8"].ToString(), dtChecks.Rows[i]["cFree9"].ToString(), dtChecks.Rows[i]["cFree10"].ToString(), key09);
|
|
DBHelper.UpdateCurrentStockCCGC(cmd, dtChecks.Rows[i]["cInvCode"].ToString(), cOWhCode, dtChecks.Rows[i]["cTVBatch"].ToString(), -Convert.ToDecimal(dtChecks.Rows[i]["iTVQuantity"].ToString()), -Convert.ToDecimal(dtChecks.Rows[i]["iTVNum"].ToString()), dtChecks.Rows[i]["cFree1"].ToString(),
|
|
dtChecks.Rows[i]["cFree2"].ToString(), dtChecks.Rows[i]["cFree3"].ToString(), dtChecks.Rows[i]["cFree4"].ToString(), dtChecks.Rows[i]["cFree5"].ToString(), dtChecks.Rows[i]["cFree6"].ToString(), dtChecks.Rows[i]["cFree7"].ToString(), dtChecks.Rows[i]["cFree8"].ToString(), dtChecks.Rows[i]["cFree9"].ToString(), dtChecks.Rows[i]["cFree10"].ToString(),
|
|
"", key09, "", "", "", "", 0, 0, 0, 0, 0, 0, 0, 0, iFatherIds, iChildIds);
|
|
iChildIds--;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
|
|
#region 查询
|
|
|
|
sql = @" select DISTINCT a.ID as ID,a.ID as IDs,a.cTVCode as TransCode,a.cODepCode FromDepCode,c.cDepName FromDepName,a.cOWhCode FromWHCode,e.cWhName FromWHName
|
|
,a.cIDepCode ToDepCode,d.cDepName ToDepName,a.cIWhCode ToWHCode,f.cWhName ToWHName
|
|
,a.cTranRequestCode as TACode ,a.cMaker as CreateUser ,a.dnmaketime as CreateDateTime
|
|
,a.cVerifyPerson as Checker ,a.dnverifytime as CheckDateTime
|
|
from TransVouch a
|
|
left join Department c on a.cODepCode=c.cDepCode
|
|
left join Department d on a.cIDepCode=d.cDepCode
|
|
left join Warehouse e on a.cOWhCode=e.cWhCode
|
|
left join Warehouse f on a.cIWhCode=f.cWhCode
|
|
WHERE A.cVerifyPerson IS NOT NULL AND A.ID in({0})
|
|
|
|
select DISTINCT a.ID as IDs, b.AutoID as DetailID,b.irowno as Sequence ,b.cInvCode as InvCode ,
|
|
b.iTVQuantity as Quantity ,b.iTVNum as Amount,b.iTRIds as TADetailID
|
|
,isnull(b.cItemCode,'') ProjectCode,isnull(b.cTVBatch,'') BatchCode,'' version ,'' brand,
|
|
isnull(b.cFree1,'') as cFree1,
|
|
isnull(b.cFree2,'') as cFree2,
|
|
isnull(b.cFree3,'') as cFree3,
|
|
isnull(b.cFree4,'') as cFree4,
|
|
isnull(b.cFree5,'') as cFree5,
|
|
isnull(b.cFree6,'') as cFree6,
|
|
isnull(b.cFree7,'') as cFree7,
|
|
isnull(b.cFree8,'') as cFree8,
|
|
isnull(b.cFree9,'') as cFree9,
|
|
isnull(b.cFree10,'') as cFree10
|
|
from TransVouch a
|
|
left join TransVouchs b on a.ID=b.ID
|
|
WHERE A.cVerifyPerson IS NOT NULL AND A.ID in({0}) ";
|
|
sql = string.Format(sql, iFatherIdTwo.TrimEnd(','));
|
|
if (ds != null)
|
|
ds.Merge(DBHelper.SQlReturnDataSet(sql, cmd));
|
|
else
|
|
ds = DBHelper.SQlReturnDataSet(sql, cmd);
|
|
|
|
#endregion
|
|
|
|
}
|
|
cmd.Transaction.Commit();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
szJson = JSON.DataSetToJson(ds, "details", "IDs");
|
|
return szJson;
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 生成调拨单
|
|
/// </summary>
|
|
/// <param name="Bills"></param>
|
|
/// <returns></returns>
|
|
public string ConfirmTrans(List<ICSTransfer> Bills)
|
|
{
|
|
|
|
string connS = "";
|
|
string szJson = "";
|
|
|
|
|
|
DataSet ds = null;
|
|
string iFatherIdTwo = "";
|
|
SqlConnection conn = new SqlConnection();
|
|
SqlCommand cmd = new SqlCommand();
|
|
|
|
if (Bills.Count <= 0)
|
|
{
|
|
throw new Exception("传送数据为空!");
|
|
}
|
|
|
|
|
|
|
|
|
|
LogInfo1(Bills);
|
|
//MergeObject(Bills, cmd);
|
|
|
|
List<string> result = Bills.Select(t => t.WorkPoint).Distinct().ToList();
|
|
|
|
|
|
foreach (string WorkPoint in result)
|
|
{
|
|
|
|
try
|
|
{
|
|
connS = string.Format(connString, WorkPoint);
|
|
conn = new System.Data.SqlClient.SqlConnection(connS);
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
foreach (ICSTransfer head in Bills)
|
|
{
|
|
iFatherIdTwo = "";
|
|
if (WorkPoint != head.WorkPoint)
|
|
continue;
|
|
if (!DBHelper.IsInventoryConsolidation(cmd, head.WorkPoint))
|
|
throw new Exception("U8正在整理现存量,请稍后再试");
|
|
|
|
string[] ss = head.WorkPoint.Split('_');
|
|
ERPDB = ss[1];
|
|
|
|
|
|
string[] dd = CRNALL.Split('~');
|
|
string crdname = dd[2];
|
|
string crdname1 = dd[3];
|
|
string carname = dd[4];
|
|
string carname1 = dd[5];
|
|
string surface = dd[6];
|
|
string carname2 = dd[0];
|
|
string surface1 = dd[1];
|
|
string cardnewcode = DBHelper.GetCardNumber(carname, cmd);
|
|
string cardnewcode1 = DBHelper.GetCardNumber(carname1, cmd);
|
|
string cardnewcode2 = DBHelper.GetCardNumber(carname2, cmd);
|
|
int num = 0;
|
|
foreach (ICSTransfer nu in Bills)
|
|
{
|
|
num = head.details.Count();
|
|
}
|
|
|
|
string sql = "";
|
|
ICSUserInfo userInfo = new ICSUserInfo();
|
|
userInfo = DBHelper.GetPersonInfo(head.User, cmd);
|
|
string cIWhCode = string.Empty;
|
|
string cOWhCode = string.Empty;
|
|
#region 调拨单
|
|
sql = "select * from dbo.ST_AppTransVouchs where ID in (select ID from dbo.ST_AppTransVouch where cTVCode='" + head.TACode + "')";
|
|
DataTable dtChecks = DBHelper.SQlReturnData(sql, cmd);
|
|
num = dtChecks.Rows.Count;
|
|
Dictionary<string, int> dic1 = DBHelper.GetAllCode("" + ERPDB + "", surface1, "" + num + "", head.WorkPoint);
|
|
int iFather = Convert.ToInt32(dic1["iFatherId"].ToString());
|
|
int iChild = Convert.ToInt32(dic1["iChildId"].ToString());
|
|
DateTime date = DateTime.Now;
|
|
string iBaseCode = DBHelper.GetAllRDCode(cardnewcode2, "" + date + "", "admin", "", head.WorkPoint);
|
|
string cRDcode2 = DBHelper.GetRDCode(crdname, cmd);
|
|
string cRDcode1 = DBHelper.GetRDCode(crdname1, cmd);
|
|
string DEF_ID = DBHelper.GetDefaultTemplate(cardnewcode2, cmd);
|
|
|
|
|
|
|
|
sql = @"INSERT INTO dbo.TransVouch
|
|
(cTVCode,dTVDate,cOWhCode,cIWhCode,cODepCode,cIDepCode,cIRdCode,cORdCode,cMaker,ID
|
|
,VT_ID,itransflag,dnmaketime
|
|
,iswfcontrolled,iPrintCount)
|
|
SELECT @cTVCode,CONVERT(NVARCHAR(15),GETDATE(),23),@cOWhCode,@cIWhCode,cODepCode,cIDepCode,cIRdCode,cORdCode,@cMaker,@ID
|
|
,@VT_ID,'正向',GETDATE()
|
|
,0,0
|
|
FROM ST_AppTransVouch
|
|
WHERE cTVCode='" + head.TACode + @"'
|
|
|
|
";
|
|
cmd.Parameters.Clear();
|
|
cmd.Parameters.Add(new SqlParameter("@ID", iFather));
|
|
cmd.Parameters.Add(new SqlParameter("@cTVCode", iBaseCode));
|
|
cmd.Parameters.Add(new SqlParameter("@cMaker", userInfo.UserName));
|
|
cmd.Parameters.Add(new SqlParameter("@VT_ID", DEF_ID));
|
|
|
|
cmd.Parameters.Add(new SqlParameter("@cOWhCode", head.FromWHCode));
|
|
cmd.Parameters.Add(new SqlParameter("@cIWhCode", head.ToWHCode));
|
|
|
|
cmd.CommandText = sql;
|
|
try
|
|
{
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error("生成调拨单表头失败!调拨单:" + iBaseCode + ";异常:" + ex.Message + ";SQL:\r\n" + sql);
|
|
throw new Exception("程序异常,请联系开发人员!");
|
|
}
|
|
iFatherIdTwo += "'" + iFather + "',";
|
|
foreach (ICSTransfers body in head.details)
|
|
{
|
|
if (DBHelper.bInvBatch(body.InvCode, cmd) == true)
|
|
{
|
|
if (body.BatchCode == "")
|
|
{
|
|
log.Error("该物料:" + body.InvCode + "已启用批次,请重新填写!");
|
|
throw new Exception("该物料:" + body.InvCode + "已启用批次,请重新填写!");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (body.BatchCode != "")
|
|
{
|
|
log.Error("该物料:" + body.InvCode + "未启用批次,请重新填写!");
|
|
throw new Exception("该物料:" + body.InvCode + "未启用批次,请重新填写!");
|
|
}
|
|
}
|
|
sql = @" INSERT INTO dbo.TransVouchs
|
|
(cTVCode,cInvCode,iTVNum,iTVQuantity,cTVBatch,autoID,ID,bCosting,iTRIds,iMPoIds,cmocode,imoseq,cItemCode
|
|
,iExpiratDateCalcu,irowno,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10)
|
|
SELECT @cTVCode,@cInvCode,@iTVNum,@iTVQuantity,@cTVBatch,@autoID,@ID,1,autoid,iMPoIds,cmocode,imoseq,@cItemCode
|
|
,0,irowno,@cFree1,@cFree2,@cFree3,@cFree4,@cFree5,@cFree6,@cFree7,@cFree8,@cFree9,@cFree10
|
|
FROM ST_AppTransVouchs WHERE autoID='" + body.TADetailID + @"'
|
|
|
|
|
|
update A set A.iTvSumQuantity=isnull(A.iTvSumQuantity,0)+B.iTVQuantity,A.iTVSumNum=isnull(A.iTVSumNum,0)+B.iTVNum
|
|
FROM ST_AppTransVouchs A
|
|
LEFT JOIN TransVouchs B ON A.autoID=B.iTRIds
|
|
where A.autoID='" + body.TADetailID + @"'
|
|
";
|
|
cmd.Parameters.Clear();
|
|
cmd.Parameters.Add(new SqlParameter("@ID", iFather));
|
|
cmd.Parameters.Add(new SqlParameter("@cTVCode", iBaseCode));
|
|
cmd.Parameters.Add(new SqlParameter("@autoID", iChild));
|
|
cmd.Parameters.Add(new SqlParameter("@cInvCode", body.InvCode));
|
|
cmd.Parameters.Add(new SqlParameter("@iTVQuantity", body.Quantity));
|
|
cmd.Parameters.Add(new SqlParameter("@iTVNum", body.Amount.ToString("0.00")));
|
|
cmd.Parameters.Add(new SqlParameter("@cTVBatch", body.BatchCode));
|
|
cmd.Parameters.Add(new SqlParameter("@cItemCode", body.ProjectCode));
|
|
cmd.Parameters.Add(new SqlParameter("@cFree1", body.cFree1));
|
|
cmd.Parameters.Add(new SqlParameter("@cFree2", body.cFree2));
|
|
cmd.Parameters.Add(new SqlParameter("@cFree3", body.cFree3));
|
|
cmd.Parameters.Add(new SqlParameter("@cFree4", body.cFree4));
|
|
cmd.Parameters.Add(new SqlParameter("@cFree5", body.cFree5));
|
|
cmd.Parameters.Add(new SqlParameter("@cFree6", body.cFree6));
|
|
cmd.Parameters.Add(new SqlParameter("@cFree7", body.cFree7));
|
|
cmd.Parameters.Add(new SqlParameter("@cFree8", body.cFree8));
|
|
cmd.Parameters.Add(new SqlParameter("@cFree9", body.cFree9));
|
|
cmd.Parameters.Add(new SqlParameter("@cFree10", body.cFree10));
|
|
cmd.CommandText = sql;
|
|
iChild--;
|
|
try
|
|
{
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error("生成调拨单子表失败!调拨单:" + iBaseCode + ",行:" + body.Sequence + ";异常:" + ex.Message + ";SQL:\r\n" + sql);
|
|
throw new Exception("程序异常,请联系开发人员!");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region 检查
|
|
sql = "select * from dbo.TransVouch where ID='" + iFather + "';";
|
|
DataTable dtCheck = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dtCheck != null && dtCheck.Rows.Count > 0)
|
|
{
|
|
string cHandler = dtCheck.Rows[0]["cVerifyPerson"].ToString();
|
|
if (!string.IsNullOrEmpty(cHandler))
|
|
{
|
|
throw new Exception("调拨单:" + iBaseCode + "不是开立状态!");
|
|
}
|
|
cIWhCode = dtCheck.Rows[0]["cIWhCode"].ToString();
|
|
cOWhCode = dtCheck.Rows[0]["cOWhCode"].ToString();
|
|
sql = string.Format("select * from Warehouse where cWhCode in ('{0}','{1}')", dtCheck.Rows[0]["cOWhCode"].ToString(), dtCheck.Rows[0]["cIWhCode"].ToString());
|
|
DataTable dtWh = DBHelper.SQlReturnData(sql, cmd);
|
|
if (dtWh != null && dtWh.Rows.Count > 1)
|
|
{
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("调拨单中转入或者转出仓库不存在!");
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
throw new Exception("调拨单:" + iBaseCode + "在U8中不存在!");
|
|
}
|
|
#endregion
|
|
|
|
#region 审核
|
|
sql = "UPDATE dbo.TransVouch SET cVerifyPerson='" + userInfo.UserName + "' ,dVerifyDate=CONVERT(VARCHAR(50),GETDATE(),112),dnverifytime=GETDATE() WHERE cTVCode='" + iBaseCode + "'";
|
|
cmd.CommandText = sql;
|
|
try
|
|
{
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error("审核调拨单失败!异常:" + ex.Message + ";\r\n SQL:" + sql);
|
|
throw new Exception("程序异常,请联系开发人员!");
|
|
}
|
|
int bodyID = 0;
|
|
|
|
#endregion
|
|
|
|
sql = "select * from dbo.TransVouchs where ID='" + iFather + "';";
|
|
dtChecks = DBHelper.SQlReturnData(sql, cmd);
|
|
#region 其他入库单
|
|
//取得out库单的默认显示模版
|
|
|
|
|
|
VouchKey key08 = new VouchKey();
|
|
|
|
num = dtChecks.Rows.Count;
|
|
Dictionary<string, int> dic = DBHelper.GetAllCode("" + ERPDB + "", surface, "" + num + "", head.WorkPoint);
|
|
int iFatherId = Convert.ToInt32(dic["iFatherId"].ToString());
|
|
int iChildId = Convert.ToInt32(dic["iChildId"].ToString());
|
|
DateTime date1 = DateTime.Now;
|
|
string cRDcode08 = DBHelper.GetRDCode(crdname1, cmd);
|
|
string iBaseCodeLen = DBHelper.GetAllRDCode(cardnewcode1, "" + date1 + "", "admin", cRDcode08, head.WorkPoint);
|
|
|
|
string DEF_ID08 = DBHelper.GetDefaultTemplate(cardnewcode1, cmd);
|
|
#region 其他入库单表头
|
|
sql = @"INSERT INTO dbo.RdRecord08
|
|
(ID,bRdFlag,cVouchType,cBusType,cSource,cBusCode,cWhCode,dDate,cCode,cRdCode,
|
|
cHandler,cMemo,bTransFlag,cMaker,dVeriDate,bpufirst,biafirst,VT_ID,bIsSTQc,bOMFirst,
|
|
bFromPreYear,bIsComplement,iDiscountTaxType,ireturncount,
|
|
iverifystate,iswfcontrolled,dnmaketime,dnverifytime,bredvouch,cSourceLs,cDepCode)
|
|
|
|
SELECT @ID,'1','08','调拨入库','调拨',a.cTVCode,cIWhCode,CONVERT(NVARCHAR(15),GETDATE(),23),a.cTVCode,cIRdCode,
|
|
@cHandler,@cMemo,'0',@cMaker,CONVERT(NVARCHAR(15),GETDATE(),23),'0','0',
|
|
@VT_ID,'0','0','0','0','0','0','0','0',GETDATE(),GETDATE(),'0','1',cIDepCode
|
|
from dbo.TransVouch a
|
|
WHERE cTVCode='" + iBaseCode + "' ";
|
|
|
|
cmd.Parameters.Clear();
|
|
cmd.Parameters.Add(new SqlParameter("@ID", iFatherId));
|
|
//cmd.Parameters.Add(new SqlParameter("@cBusCode", head.ID));
|
|
|
|
cmd.Parameters.Add(new SqlParameter("@cCode", iBaseCodeLen));
|
|
cmd.Parameters.Add(new SqlParameter("@cHandler", userInfo.UserName));
|
|
cmd.Parameters.Add(new SqlParameter("@cMemo", ""));
|
|
cmd.Parameters.Add(new SqlParameter("@cMaker", userInfo.UserName));
|
|
cmd.Parameters.Add(new SqlParameter("@VT_ID", DEF_ID08));
|
|
|
|
cmd.CommandText = sql;
|
|
try
|
|
{
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error("生成其他入库单表头失败!调拨单:" + iBaseCode + ";异常:" + ex.Message + ";SQL:\r\n" + sql);
|
|
throw new Exception("程序异常,请联系开发人员!");
|
|
}
|
|
#endregion
|
|
|
|
#region 3.5 其他入库单表体
|
|
for (int i = 0; i < dtChecks.Rows.Count; i++)
|
|
{
|
|
#region 3.5.1 表体
|
|
sql = @"INSERT INTO dbo.rdrecords08
|
|
(AutoID,ID,cInvCode,iQuantity,iSOutQuantity,iSOutNum,iFlag,iTrIds,iNQuantity,iNum,cItemCode,
|
|
cMassUnit,bLPUseFree,iRSRowNO,iOriTrackID,bCosting,bVMIUsed,iExpiratDateCalcu,iordertype,irowno,cbaccounter,cBatch,iPUnitCost,iPPrice,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10)
|
|
SELECT @AutoID,@ID,cInvCode,a.iTVQuantity,'0','0','0',a.AutoID,iTVQuantity,iTVNum,a.cItemCode,
|
|
'0','0','0','0','1','0','0','0',a.irowno,null,cTVBatch,iTVPCost,iTVPPrice ,a.cFree1,a.cFree2,a.cFree3,a.cFree4,a.cFree5,a.cFree6,a.cFree7,a.cFree8,a.cFree9,a.cFree10
|
|
from TransVouchs a
|
|
inner join TransVouch b on a.ID=b.ID
|
|
where a.autoid='" + dtChecks.Rows[i]["AutoID"].ToString() + @"';";
|
|
|
|
cmd.Parameters.Clear();
|
|
cmd.Parameters.Add(new SqlParameter("@AutoID", iChildId));
|
|
cmd.Parameters.Add(new SqlParameter("@ID", iFatherId));
|
|
|
|
cmd.CommandText = sql;
|
|
try
|
|
{
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error("生成其他出库单表体失败!调拨单:" + iBaseCode + ";异常:" + ex.Message + ";SQL:\r\n" + sql);
|
|
throw new Exception("程序异常,请联系开发人员!");
|
|
}
|
|
#endregion
|
|
|
|
//更新现存量
|
|
key08.cBustypeUN = "调拨入库";
|
|
key08.cVouchTypeUN = "08";
|
|
key08.TableName = "IA_ST_UnAccountVouch08";
|
|
key08.UpdateTodoQuantity = head.UpdateTodoQuantity;
|
|
//DBHelper.UpdateCurrentStockNEW(cmd, dtChecks.Rows[i]["cInvCode"].ToString(), cIWhCode, dtChecks.Rows[i]["cTVBatch"].ToString(), Convert.ToDecimal(dtChecks.Rows[i]["iTVQuantity"].ToString()), dtChecks.Rows[i]["cFree1"].ToString(), dtChecks.Rows[i]["cFree2"].ToString(), dtChecks.Rows[i]["cFree3"].ToString(), dtChecks.Rows[i]["cFree4"].ToString(), dtChecks.Rows[i]["cFree5"].ToString(), dtChecks.Rows[i]["cFree6"].ToString(), dtChecks.Rows[i]["cFree7"].ToString(), dtChecks.Rows[i]["cFree8"].ToString(), dtChecks.Rows[i]["cFree9"].ToString(), dtChecks.Rows[i]["cFree10"].ToString(), key08);
|
|
|
|
DBHelper.UpdateCurrentStockCCGC(cmd, dtChecks.Rows[i]["cInvCode"].ToString(), cIWhCode, dtChecks.Rows[i]["cTVBatch"].ToString(), Convert.ToDecimal(dtChecks.Rows[i]["iTVQuantity"].ToString()), Convert.ToDecimal(dtChecks.Rows[i]["iTVNum"].ToString()), dtChecks.Rows[i]["cFree1"].ToString(),
|
|
dtChecks.Rows[i]["cFree2"].ToString(), dtChecks.Rows[i]["cFree3"].ToString(), dtChecks.Rows[i]["cFree4"].ToString(), dtChecks.Rows[i]["cFree5"].ToString(), dtChecks.Rows[i]["cFree6"].ToString(), dtChecks.Rows[i]["cFree7"].ToString(), dtChecks.Rows[i]["cFree8"].ToString(), dtChecks.Rows[i]["cFree9"].ToString(), dtChecks.Rows[i]["cFree10"].ToString(),
|
|
"", key08, "", "", "", "", 0, 0, 0, 0, 0, 0, 0, 0, iFatherId, iChildId);
|
|
//DBHelper.UpdateCurrentStock(cmd, dtChecks.Rows[i]["cInvCode"].ToString(), cIWhCode, "", Convert.ToDecimal(dtChecks.Rows[i]["iTVQuantity"].ToString()), key08);
|
|
iChildId--;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
#region 其他出库单
|
|
|
|
|
|
//取得采购入库单单据 表头ID,表体DID
|
|
VouchKey key09 = new VouchKey();
|
|
//key09 = U8Helper.GetPrimaryKey("rd", ErpName, 1, cmd);
|
|
//// 取得表头单据号
|
|
//string Code09 = U8Helper.GetRdrecord09Code(ErpName, "QC", cmd);
|
|
var nums = dtChecks.Rows.Count + num;
|
|
Dictionary<string, int> dics = DBHelper.GetAllCode("" + ERPDB + "", surface, "" + nums + "", head.WorkPoint);
|
|
int iFatherIds = Convert.ToInt32(dics["iFatherId"].ToString());
|
|
int iChildIds = Convert.ToInt32(dics["iChildId"].ToString());
|
|
DateTime dates = DateTime.Now;
|
|
string cRDcode09 = DBHelper.GetRDCode(crdname, cmd);
|
|
string iBaseCodeLens = DBHelper.GetAllRDCode(cardnewcode, "" + date + "", "admin", cRDcode09, head.WorkPoint);
|
|
|
|
string DEF_ID09 = DBHelper.GetDefaultTemplate(cardnewcode, cmd);
|
|
#region 其他出库单表头
|
|
sql = @"INSERT INTO dbo.RdRecord09
|
|
(ID,bRdFlag,cVouchType,cBusType,cSource,cBusCode,cWhCode,dDate,cCode,cRdCode,
|
|
cHandler,cMemo,bTransFlag,cMaker,dVeriDate,bpufirst,biafirst,VT_ID,bIsSTQc,bOMFirst,
|
|
bFromPreYear,bIsComplement,iDiscountTaxType,ireturncount,
|
|
iverifystate,iswfcontrolled,dnmaketime,dnverifytime,bredvouch,cSourceLs,cDepCode)
|
|
|
|
SELECT @ID,'0','09','调拨出库','调拨',a.cTVCode,cOWhCode,CONVERT(NVARCHAR(15),GETDATE(),23),@cCode,@cRdCode,
|
|
@cHandler,@cMemo,'0',@cMaker,CONVERT(NVARCHAR(15),GETDATE(),23),'0','0',
|
|
'85','0','0','0','0','0','0','0','0',GETDATE(),GETDATE(),'0','1',cODepCode
|
|
from dbo.TransVouch a WHERE cTVCode='" + iBaseCode + "' ";
|
|
|
|
cmd.Parameters.Clear();
|
|
cmd.Parameters.Add(new SqlParameter("@ID", iFatherIds));
|
|
|
|
cmd.Parameters.Add(new SqlParameter("@cCode", iBaseCodeLens));
|
|
cmd.Parameters.Add(new SqlParameter("@cHandler", userInfo.UserName));
|
|
cmd.Parameters.Add(new SqlParameter("@cMemo", ""));
|
|
cmd.Parameters.Add(new SqlParameter("@cMaker", userInfo.UserName));
|
|
cmd.Parameters.Add(new SqlParameter("@VT_ID", DEF_ID09));
|
|
cmd.Parameters.Add(new SqlParameter("@cRdCode", cRDcode09));
|
|
cmd.CommandText = sql;
|
|
try
|
|
{
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error("生成其他出库单失败!调拨单:" + iBaseCode + ";异常:" + ex.Message + ";SQL:\r\n" + sql);
|
|
throw new Exception("程序异常,请联系开发人员!");
|
|
}
|
|
#endregion
|
|
|
|
#region 3.5 其他出库单表体
|
|
for (int i = 0; i < dtChecks.Rows.Count; i++)
|
|
{
|
|
#region 3.5.1 表体
|
|
|
|
//判断物料批号与现存量表批号是否一致、数量不能超过现存量物料数量
|
|
//sql = @"SELECT cBatch,iQuantity from CurrentStock WHERE cInvCode='" + dtCheck.Rows[0]["cInvCode"].ToString() + "'AND cWhCode='" + dtCheck.Rows[0]["cOWhCode"].ToString() + "'";
|
|
//DataTable dtItem = DBHelper.SQlReturnData(sql, cmd);
|
|
//if (dtItem != null && dtItem.Rows.Count > 0)
|
|
//{
|
|
// if (!dtItem.Rows[0]["cBatch"].ToString().Equals(body.cTVBatch))
|
|
// {
|
|
// throw new Exception("物料条码的批号与U8现存量物料批号不一致,物料:" + body.cInvCode);
|
|
// }
|
|
// if (Convert.ToDecimal(dtItem.Rows[0]["iQuantity"].ToString()) < body.iQuantity)
|
|
// {
|
|
// throw new Exception("物料条码的数量大于U8现存量物料数量,物料:" + body.cInvCode);
|
|
// }
|
|
|
|
//}
|
|
//else
|
|
//{
|
|
// throw new Exception("物料:" + body.cInvCode + "在现存量表中不存在!");
|
|
//}
|
|
//key09.DID += 1;
|
|
//Rd09irowno += 1;
|
|
sql = @"INSERT INTO dbo.rdrecords09
|
|
(AutoID,ID,cInvCode,iQuantity,iSOutQuantity,iSOutNum,iFlag,iTrIds,iNQuantity,iNum,cItemCode,
|
|
cMassUnit,bLPUseFree,iRSRowNO,iOriTrackID,bCosting,bVMIUsed,iExpiratDateCalcu,iordertype,irowno,cbaccounter,cBatch,iPUnitCost,iPPrice,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10)
|
|
SELECT @AutoID,@ID,cInvCode,a.iTVQuantity,'0','0','0',a.AutoID,iTVQuantity,iTVNum,a.cItemCode,
|
|
'0','0','0','0','1','0','0','0',a.irowno,null,cTVBatch,iTVPCost,iTVPPrice ,a.cFree1,a.cFree2,a.cFree3,a.cFree4,a.cFree5,a.cFree6,a.cFree7,a.cFree8,a.cFree9,a.cFree10
|
|
from TransVouchs a
|
|
inner join TransVouch b on a.ID=b.ID
|
|
where a.autoid='" + dtChecks.Rows[i]["AutoID"].ToString() + @"'
|
|
|
|
update a set a.TransQty=isnull(a.TransQty,0)+b.iTVQuantity from mom_moallocate a left join TransVouchs b on a.AllocateId=b.iMPoIds
|
|
where b.autoid='" + dtChecks.Rows[i]["AutoID"].ToString() + @"'
|
|
;";
|
|
|
|
cmd.Parameters.Clear();
|
|
cmd.Parameters.Add(new SqlParameter("@AutoID", iChildIds));
|
|
cmd.Parameters.Add(new SqlParameter("@ID", iFatherIds));
|
|
|
|
|
|
cmd.CommandText = sql;
|
|
try
|
|
{
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error("生成其他出库单表体失败!调拨单:" + iBaseCode + ";异常:" + ex.Message + ";SQL:\r\n" + sql);
|
|
throw new Exception("程序异常,请联系开发人员!");
|
|
}
|
|
|
|
sql = @"INSERT INTO dbo.rdrecords09sub
|
|
( AutoID , ID ,iBG_Ctrl , iBGSTSum )
|
|
values('" + iChildIds + "','" + iFatherIds + "',0,0)";
|
|
cmd.CommandText = sql;
|
|
cmd.ExecuteNonQuery();
|
|
#endregion
|
|
|
|
//更新现存量
|
|
key09.cBustypeUN = "调拨出库";
|
|
key09.cVouchTypeUN = "09";
|
|
key09.TableName = "IA_ST_UnAccountVouch09";
|
|
//DBHelper.UpdateCurrentStock(cmd, dtChecks.Rows[i]["cInvCode"].ToString(), cOWhCode, "", -Convert.ToDecimal(dtChecks.Rows[i]["iTVQuantity"].ToString()), key09);
|
|
//DBHelper.UpdateCurrentStockNEW(cmd, dtChecks.Rows[i]["cInvCode"].ToString(), cOWhCode, dtChecks.Rows[i]["cTVBatch"].ToString(), -Convert.ToDecimal(dtChecks.Rows[i]["iTVQuantity"].ToString()), dtChecks.Rows[i]["cFree1"].ToString(), dtChecks.Rows[i]["cFree2"].ToString(), dtChecks.Rows[i]["cFree3"].ToString(), dtChecks.Rows[i]["cFree4"].ToString(), dtChecks.Rows[i]["cFree5"].ToString(), dtChecks.Rows[i]["cFree6"].ToString(), dtChecks.Rows[i]["cFree7"].ToString(), dtChecks.Rows[i]["cFree8"].ToString(), dtChecks.Rows[i]["cFree9"].ToString(), dtChecks.Rows[i]["cFree10"].ToString(), key09);
|
|
|
|
DBHelper.UpdateCurrentStockCCGC(cmd, dtChecks.Rows[i]["cInvCode"].ToString(), cOWhCode, dtChecks.Rows[i]["cTVBatch"].ToString(), -Convert.ToDecimal(dtChecks.Rows[i]["iTVQuantity"].ToString()), Convert.ToDecimal(dtChecks.Rows[i]["iTVNum"].ToString()), dtChecks.Rows[i]["cFree1"].ToString(),
|
|
dtChecks.Rows[i]["cFree2"].ToString(), dtChecks.Rows[i]["cFree3"].ToString(), dtChecks.Rows[i]["cFree4"].ToString(), dtChecks.Rows[i]["cFree5"].ToString(), dtChecks.Rows[i]["cFree6"].ToString(), dtChecks.Rows[i]["cFree7"].ToString(), dtChecks.Rows[i]["cFree8"].ToString(), dtChecks.Rows[i]["cFree9"].ToString(), dtChecks.Rows[i]["cFree10"].ToString(),
|
|
"", key09, "", "", "", "", 0, 0, 0, 0, 0, 0, 0, 0, iFatherIds, iChildIds);
|
|
iChildIds--;
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
#region 查询
|
|
|
|
sql = @" select top 1 a.ID as ID,a.ID as IDs,a.cTVCode as TransCode,a.cODepCode FromDepCode,c.cDepName FromDepName,a.cOWhCode FromWHCode,e.cWhName FromWHName
|
|
,a.cIDepCode ToDepCode,d.cDepName ToDepName,a.cIWhCode ToWHCode,f.cWhName ToWHName
|
|
,a.cTranRequestCode as TACode ,a.cMaker as CreateUser ,a.dnmaketime as CreateDateTime
|
|
,a.cVerifyPerson as Checker ,a.dnverifytime as CheckDateTime
|
|
from TransVouch a
|
|
left join Department c on a.cODepCode=c.cDepCode
|
|
left join Department d on a.cIDepCode=d.cDepCode
|
|
left join Warehouse e on a.cOWhCode=e.cWhCode
|
|
left join Warehouse f on a.cIWhCode=f.cWhCode
|
|
WHERE A.cVerifyPerson IS NOT NULL AND A.ID in({0})
|
|
|
|
select DISTINCT a.ID as IDs, b.AutoID as DetailID,b.irowno as Sequence ,b.cInvCode as InvCode ,
|
|
b.iTVQuantity as Quantity ,b.iTVNum as Amount,b.iTRIds as TADetailID
|
|
,isnull(b.cItemCode,'') ProjectCode,isnull(b.cTVBatch,'') BatchCode,'' version ,'' brand,
|
|
isnull(b.cFree1,'') as cFree1,
|
|
isnull(b.cFree2,'') as cFree2,
|
|
isnull(b.cFree3,'') as cFree3,
|
|
isnull(b.cFree4,'') as cFree4,
|
|
isnull(b.cFree5,'') as cFree5,
|
|
isnull(b.cFree6,'') as cFree6,
|
|
isnull(b.cFree7,'') as cFree7,
|
|
isnull(b.cFree8,'') as cFree8,
|
|
isnull(b.cFree9,'') as cFree9,
|
|
isnull(b.cFree10,'') as cFree10
|
|
from TransVouch a
|
|
left join TransVouchs b on a.ID=b.ID
|
|
WHERE A.cVerifyPerson IS NOT NULL AND A.ID in({0}) ";
|
|
sql = string.Format(sql, iFatherIdTwo.TrimEnd(','));
|
|
if (ds != null)
|
|
ds.Merge(DBHelper.SQlReturnDataSet(sql, cmd));
|
|
else
|
|
ds = DBHelper.SQlReturnDataSet(sql, cmd);
|
|
|
|
#endregion
|
|
}
|
|
cmd.Transaction.Commit();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
szJson = JSON.DataSetToJson(ds, "details", "IDs");
|
|
return szJson;
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 记录日志
|
|
/// </summary>
|
|
/// <param name="Bills"></param>
|
|
private void LogInfo(List<ICSTransferDoc> Bills)
|
|
{
|
|
string HeadList = string.Empty;
|
|
string BodyList = string.Empty;
|
|
foreach (ICSTransferDoc head in Bills)
|
|
{
|
|
HeadList += "\r\n 表头调拨单号:" + head.ID + ",用户:" + head.User + ",站点:" + head.WorkPoint;
|
|
foreach (ICSTransferDoc body in Bills)
|
|
{
|
|
BodyList += "\r\n 表体主键ID: " + body.ID + "";
|
|
}
|
|
}
|
|
log.Info(HeadList);
|
|
log.Info(BodyList);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 记录日志
|
|
/// </summary>
|
|
/// <param name="Bills"></param>
|
|
private void LogInfo1(List<ICSTransfer> Bills)
|
|
{
|
|
string HeadList = string.Empty;
|
|
string BodyList = string.Empty;
|
|
foreach (ICSTransfer head in Bills)
|
|
{
|
|
HeadList += "\r\n 表头调拨单号:" + head.TACode + ",用户:" + head.User + ",站点:" + head.WorkPoint;
|
|
foreach (ICSTransfer body in Bills)
|
|
{
|
|
BodyList += "\r\n 表体主键ID: " + body.TACode + "";
|
|
}
|
|
}
|
|
log.Info(HeadList);
|
|
log.Info(BodyList);
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|