diff --git a/ICSSoft.WMS.WebAPI/ICSSoft.Common/DataToJsonHelper.cs b/ICSSoft.WMS.WebAPI/ICSSoft.Common/DataToJsonHelper.cs
index aa1257a..8a5c688 100644
--- a/ICSSoft.WMS.WebAPI/ICSSoft.Common/DataToJsonHelper.cs
+++ b/ICSSoft.WMS.WebAPI/ICSSoft.Common/DataToJsonHelper.cs
@@ -46,6 +46,10 @@ namespace ICSSoft.Common
///
public static string DataSetToJson(DataSet dataSet,string RelationName,string column)
{
+ //if (!dataSet.Tables[0].Columns.Contains(column))
+ //{
+
+ //}
DataRelation dataRelation = new DataRelation(RelationName, dataSet.Tables[0].Columns[column], dataSet.Tables[1].Columns[column]);
dataSet.Relations.Add(dataRelation);
diff --git a/ICSSoft.WMS.WebAPI/ICSSoft.Common/ERPUrl.cs b/ICSSoft.WMS.WebAPI/ICSSoft.Common/ERPUrl.cs
index 629b3e0..0c8434d 100644
--- a/ICSSoft.WMS.WebAPI/ICSSoft.Common/ERPUrl.cs
+++ b/ICSSoft.WMS.WebAPI/ICSSoft.Common/ERPUrl.cs
@@ -76,6 +76,12 @@
/// 一步式调拨单
///
public static string OneStepTransferDocInURL = url+ "OneStepTransferDocIn/Approve";
+
+ ///
+ /// 调拨单
+ ///
+ public static string StepTransferDocInURL = url + "OneStepTransferDocIn/Create";
+
///
/// 两步调出
///
diff --git a/ICSSoft.WMS.WebAPI/ICSSoft.Common/TransTypeEnum.cs b/ICSSoft.WMS.WebAPI/ICSSoft.Common/TransTypeEnum.cs
index 7d63ac5..c7128fe 100644
--- a/ICSSoft.WMS.WebAPI/ICSSoft.Common/TransTypeEnum.cs
+++ b/ICSSoft.WMS.WebAPI/ICSSoft.Common/TransTypeEnum.cs
@@ -116,6 +116,10 @@ namespace ICSSoft.Common
[DBValue("21")]
OneStepTransferDocIn, //(合并发料)
+ [Description("调拨")]
+ [DBValue("69")]
+ StepTransferDocIn, //(合并发料)
+
[Description("两步调出")]
[DBValue("22")]
TwoStepTransferDocOut, //(合并发料)
diff --git a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSubmitService.cs b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSubmitService.cs
index b894057..8e98654 100644
--- a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSubmitService.cs
+++ b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSSubmitService.cs
@@ -227,28 +227,18 @@ namespace ICSSoft.DataProject
#region SLQ
sql = @"SELECT a.ID,
{0}
- a.InvCode,
- inv.InvName,
- inv.InvStd,
a.Quantity,
- inv.InvUnit,
+ a.SelectLevel AS LocationCode,
a.Amount,
- a.WHCode,
- inv.AmountUnit,
- wh.WarehouseName AS WHName,
a.MUSER AS [User],
a.MTIME AS [MTime]
- FROM {1}
- INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
- LEFT JOIN ICSWarehouse wh ON a.WHCode=wh.WarehouseCode AND a.WorkPoint=wh.WorkPoint
+ FROM {1}
WHERE {2} ";
#endregion
columns = @"a.CheckCode AS TransCode,
- a.ID AS DetailID,
- '' AS Type,
- row_number() OVER (ORDER BY a.InvCode) AS TransSequence,
- a.ActualQuantity AS IssueQuantity,";
+ a.ID,
+ '' AS Type,";
tableName = @"ICSCheck a ";
@@ -318,6 +308,11 @@ namespace ICSSoft.DataProject
where = @" a.TransferNO='{0}' AND a.WorkPoint='{1}' AND a.Status='1' ";
}
#endregion
+ #region 调拨(合并发料)
+ else if (TransType == TransTypeEnum.StepTransferDocIn.GetDescription())
+ {
+ }
+ #endregion
#region 两步调出(合并发料)
else if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
{
@@ -833,6 +828,7 @@ namespace ICSSoft.DataProject
|| TransType == TransTypeEnum.MOIssueDoc.GetDescription() //生产发料
|| TransType == TransTypeEnum.SalesShipmentDoc.GetDescription() //销售出库
|| TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription() //一步调拨
+ || TransType == TransTypeEnum.StepTransferDocIn.GetDescription() //调拨
|| TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription() //两步调出
|| TransType == TransTypeEnum.OtherOutDoc.GetDescription() //其他出库
|| TransType == TransTypeEnum.Check.GetDescription() //盘点
@@ -1162,9 +1158,9 @@ namespace ICSSoft.DataProject
{
string Lot = drLot["LotNo"].ToString();
string rowFilter = "InvCode='" + drLot["InvCode"] + "'";
- CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo041"), Lot, drLot["InvCode"]));
+ //CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo041"), Lot, drLot["InvCode"]));
rowFilter += " AND (LEN(ISNULL(WHCode,''))<=0 OR (LEN(ISNULL(WHCode,''))>0 AND WHCode='" + drLot["WHCode"] + "'))";
- CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo042"), Lot, drLot["WHCode"]));
+ //CheckTrans(dataView, rowFilter, string.Format(language.GetNameByCode("WMSAPIInfo042"), Lot, drLot["WHCode"]));
//盘点不需要对比以下属性
if (TransType == TransTypeEnum.Check.GetDescription())
continue;
@@ -3559,7 +3555,7 @@ namespace ICSSoft.DataProject
}
#endregion
- #region 调拨
+ #region 一步调拨
///
/// 一步调拨
///
@@ -3671,6 +3667,88 @@ namespace ICSSoft.DataProject
}
#endregion
+ #region 调拨
+ ///
+ /// 调拨
+ ///
+ ///
+ ///
+ public static DataTable TransferDocCreate(List JsonData)
+ {
+ var language = LanguageHelper.GetName("WMSAPIInfo");
+ if (JsonData.Count <= 0)
+ {
+ throw new Exception(language.GetNameByCode("WMSAPIInfo007"));//"传送数据为空!"
+ }
+ using (SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString))
+ {
+ conn.Open();
+ SqlTransaction sqlTran = conn.BeginTransaction();
+ SqlCommand cmd = new SqlCommand();
+ cmd.Transaction = sqlTran;
+ cmd.Connection = conn;
+ try
+ {
+ string sql = string.Empty;
+ string Identification = Guid.NewGuid().ToString();
+ foreach (var item in JsonData)
+ {
+ string MergeID = "";
+
+ foreach (var itemInfo in item.Detail)
+ {
+ //验证仓库库位信息
+ sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouse a WHERE a.WarehouseCode='{0}' AND a.WorkPoint='{1}')
+ BEGIN
+ RAISERROR('" + language.GetNameByCode("WMSAPIInfo069") + @"',16,1);
+ RETURN
+ END
+ IF NOT EXISTS(SELECT a.ID FROM ICSLocation a WHERE a.LocationCode='{2}' AND a.WorkPoint='{1}')
+ BEGIN
+ RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo070"), "{2}") + @"',16,1);
+ RETURN
+ END
+ IF NOT EXISTS(SELECT a.ID
+ FROM ICSWareHouse a
+ INNER JOIN ICSLocation b ON a.ID=b.WHID AND a.WorkPoint=b.WorkPoint
+ WHERE a.WarehouseCode='{0}' AND a.WorkPoint='{1}' AND b.LocationCode='{2}')
+ BEGIN
+ RAISERROR('" + language.GetNameByCode("WMSAPIInfo071") + @"',16,1);
+ RETURN
+ END";
+ sql = string.Format(sql, itemInfo.WarehouseCode, item.WorkPoint, itemInfo.LocationCode);
+ DBHelper.ExecuteNonQuery(sql, cmd);
+
+ //更新条码信息
+ ICSWareHouseLotInfoService.WareHouseLotInfoTransfer(Identification, item.TransCode, item.TransSequence, itemInfo.WarehouseCode, itemInfo.LocationCode,
+ itemInfo.LotNo, itemInfo.CurrentQuantity, item.User, item.WorkPoint, "6", TransTypeEnum.StepTransferDocIn.GetDescription(), cmd, language, MergeID);
+ }
+ }
+ ICSWareHouseService.StepTransferDocInERP(TransTypeEnum.StepTransferDocIn.GetDescription(), Identification, cmd, language);
+
+ DataTable table = GetData(Identification, 3, cmd);
+ cmd.Transaction.Commit();
+ return table;
+ }
+ catch (Exception ex)
+ {
+ if (cmd.Transaction != null)
+ cmd.Transaction.Rollback();
+ log.Error(ex.Message);
+ throw new Exception(ex.Message);
+ }
+ finally
+ {
+ if (conn.State == ConnectionState.Open)
+ {
+ conn.Close();
+ }
+ conn.Dispose();
+ }
+ }
+ }
+ #endregion
+
#region 移库
///
/// 移库
diff --git a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseLotInfoService.cs b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseLotInfoService.cs
index 1c83413..0006919 100644
--- a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseLotInfoService.cs
+++ b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseLotInfoService.cs
@@ -286,13 +286,19 @@ namespace ICSSoft.DataProject
RETURN
END
+ IF EXISTS(SELECT id FROM ICSWareHouseLotInfo WHERE WarehouseCode='{9}' AND LocationCode='{10}' AND WorkPoint='{1}' AND LotNo = '{0}')
+ BEGIN
+ RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo355")) + @"',16,1);
+ RETURN
+ END
+
INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
MTIME,WorkPoint,EATTRIBUTE1,MergeID)
- SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
- c.WarehouseCode,c.LocationCode,'{9}','{10}','{6}',
+ SELECT NEWID(),'{3}','','',a.LotNo ,a.InvCode ,
+ c.WarehouseCode,c.LocationCode,'{9}','{10}',{6},
'','0','{7}','{8}','0','',
'','','',f.F_Account ,f.F_RealName ,
SYSDATETIME() ,a.WorkPoint ,'','{11}'
@@ -313,7 +319,7 @@ namespace ICSSoft.DataProject
RAISERROR('" + language.GetNameByCode("WMSAPIInfo038") + @"',16,1);
RETURN
END
- IF EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE LotNo='{0}' AND WorkPoint='{1}' AND a.Quantity<'{4}')
+ IF EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE LotNo='{0}' AND WorkPoint='{1}' AND a.Quantity<{4})
BEGIN
RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
RETURN
@@ -963,6 +969,15 @@ namespace ICSSoft.DataProject
WHERE c.TransferID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='1'
";
}
+ //调拨
+ else if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
+ {
+ ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
+ FROM ICSWareHouseLotInfoLog a
+ INNER JOIN ICSTransfer c ON a.TransCode=c.TransferNO AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
+ WHERE c.TransferID='{0}' AND a.Identification='{1}' AND ERPUpload='0' AND c.Type='1'
+ ";
+ }
//两步调出
else if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
{
diff --git a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseService.cs b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseService.cs
index cb8bd05..8cfd37f 100644
--- a/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseService.cs
+++ b/ICSSoft.WMS.WebAPI/ICSSoft.DataProject/ICSWareHouseService.cs
@@ -117,6 +117,86 @@ namespace ICSSoft.DataProject
}
#endregion
+ #region 调拨
+
+ ///
+ /// 调拨接口
+ ///
+ ///
+ ///
+ ///
+ public static void StepTransferDocInERP(string TransType, string Identification, SqlCommand cmd, Dictionary language)
+ {
+ try
+ {
+ #region ERP开立状态单据审核
+ //检验调拨单是否一次性发完
+ string sql = @"SELECT a.ToWarehouseCode+a.MUSER+a.FromWarehouseCode AS Costre,a.ToWarehouseCode AS ToWHCode,a.FromWarehouseCode AS FromWHCode,a.MUSER,'' AS FromDepCode,'' AS ToDepCode,NULL AS TACode,ROW_NUMBER() OVER (ORDER BY a.ToWarehouseCode) AS Sequence,NULL AS TADetailID,
+ a.InvCode,SUM(a.Quantity) AS Quantity,0 AS Amount,con.Enable AS UpdateTodoQuantity,conStock.Enable AS UpdateStock
+ ,a.WorkPoint,ISNULL(ext.ProjectCode, '') AS ProjectCode,CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END AS BatchCode,ISNULL(ext.Version, '') AS Version,ISNULL(ext.Brand, '') AS Brand,
+ ISNULL(ext.cFree1, '') AS cFree1,ISNULL(ext.cFree2, '') AS cFree2,ISNULL(ext.cFree3, '') AS cFree3,ISNULL(ext.cFree4, '') AS cFree4,ISNULL(ext.cFree5, '') AS cFree5,ISNULL(ext.cFree6, '') AS cFree6,ISNULL(ext.cFree7, '') AS cFree7,ISNULL(ext.cFree8, '') AS cFree8,ISNULL(ext.cFree9, '') AS cFree9,ISNULL(ext.cFree10, '') AS cFree10
+ INTO #TempERP
+ FROM ICSWareHouseLotInfoLog a
+ INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
+ INNER JOIN ICSInventoryLot lot ON a.LotNo=lot.LotNo AND a.WorkPoint=lot.WorkPoint
+ INNER JOIN ICSExtension ext ON lot.ExtensionID=ext.ID AND lot.WorkPoint=ext.WorkPoint
+ INNER JOIN ICSInventory inv ON a.InvCode=inv.InvCode AND a.WorkPoint=inv.WorkPoint
+ LEFT JOIN ICSInventoryBatchEnable invBat ON a.InvCode=invBat.InvCode AND a.ToWarehouseCode=invBat.WHCode AND a.WorkPoint=invBat.WorkPoint
+ INNER JOIN ICSConfiguration con ON con.Code='Stock003' AND a.WorkPoint=con.WorkPoint
+ INNER JOIN ICSConfiguration conStock ON conStock.Code='UpdateStock006' AND a.WorkPoint=conStock.WorkPoint
+ WHERE a.Identification='{0}' AND ERPUpload='0'
+ GROUP BY a.ToWarehouseCode,a.MUSER,a.InvCode,conStock.Enable,con.Enable,a.FromWarehouseCode
+ ,a.WorkPoint,ISNULL(ext.ProjectCode, ''),CASE WHEN (invBat.BatchEnable IS NULL AND ISNULL(inv.BatchEnable, '0')='1') OR ISNULL(invBat.BatchEnable, '0')='1' THEN ISNULL(ext.BatchCode, '') ELSE '' END,ISNULL(ext.Version, ''),ISNULL(ext.Brand, ''),
+ ISNULL(ext.cFree1, ''),ISNULL(ext.cFree2, ''),ISNULL(ext.cFree3, ''),ISNULL(ext.cFree4, ''),ISNULL(ext.cFree5, ''),ISNULL(ext.cFree6, ''),ISNULL(ext.cFree7, ''),ISNULL(ext.cFree8, ''),ISNULL(ext.cFree9, ''),ISNULL(ext.cFree10, '')
+
+
+ SELECT DISTINCT Costre,ToWHCode,FromWHCode,FromDepCode ,ToDepCode,MUSER AS [User],SYSDATETIME() AS MTime,UpdateTodoQuantity,WorkPoint,TACode,UpdateStock FROM #TempERP
+ SELECT Costre,Sequence,InvCode,Quantity,Amount,TADetailID,ProjectCode,BatchCode,Version,Brand,cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10
+ FROM #TempERP
+
+ DROP TABLE #TempERP";
+ sql = string.Format(sql, Identification);
+ DataSet ds = DBHelper.SQlReturnDataSet(sql, cmd);
+
+ string Inputstr = DataToJsonHelper.DataSetToJson(ds, "details", "Costre");
+ string resultStr = HTTPHelper.HttpPost(TransType, ERPUrl.StepTransferDocInURL, Inputstr);
+ Result result = new Result();
+ result = JsonConvert.DeserializeObject(resultStr);
+ if (result.Success)
+ {
+ try
+ {
+ JArray res = (JArray)JsonConvert.DeserializeObject(result.Data.ToString());
+ foreach (var item in res)
+ {
+ JObject jo = (JObject)item;
+ JArray resdetail = (JArray)JsonConvert.DeserializeObject(jo["details"].ToString());
+ foreach (var detail in resdetail)
+ {
+ JObject det = (JObject)detail;
+ ICSWareHouseLotInfoService.WareHouseLotInfoLogUpdate(TransType, det["DNDetailID"].ToString(), Identification, jo["ID"].ToString(), det["DetailID"].ToString(), jo["RCVTCode"].ToString(), det["Sequence"].ToString(), cmd, language);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ log.Debug(ex.ToString());
+ log.Debug(resultStr);
+ }
+ }
+ else
+ {
+ throw new Exception(language.GetNameByCode("WMSAPIInfo080") + result.Message);
+ }
+ #endregion
+ }
+ catch (Exception)
+ {
+ throw;
+ }
+ }
+ #endregion
+
#region 两步调出
///
/// 两步调出
diff --git a/ICSSoft.WMS.WebAPI/ICSSoft.WMS.WebAPI/Controllers/WMSBarCoreController.cs b/ICSSoft.WMS.WebAPI/ICSSoft.WMS.WebAPI/Controllers/WMSBarCoreController.cs
index fde35e4..04db366 100644
--- a/ICSSoft.WMS.WebAPI/ICSSoft.WMS.WebAPI/Controllers/WMSBarCoreController.cs
+++ b/ICSSoft.WMS.WebAPI/ICSSoft.WMS.WebAPI/Controllers/WMSBarCoreController.cs
@@ -1759,6 +1759,46 @@ namespace ICSSoft.WebAPI.Controllers
}
#endregion
+
+ #region 调拨单
+ [HttpPost]
+ [Route("api/TransferDoc/Create")]
+ public HttpResponseMessage TransferDocCreate([FromBody] object JsonData)
+ {
+ try
+ {
+ List model = new List();
+ if (JsonData != null && !string.IsNullOrWhiteSpace(JsonData.ToString()) && JsonData.ToString() != "[]")
+ {
+ model = JsonConvert.DeserializeObject>(JsonData.ToString());
+ //WMSBarCoreService action = new WMSBarCoreService();
+ //var resultStr = action.TransferDocupdte(model);
+ var resultStr = ICSSubmitService.TransferDocCreate(model);
+ res.Success = true;
+ res.Message = LanguageHelper.GetNameSingle("WMSAPI001");// "接口调用成功!";
+ if (resultStr != null && resultStr.Rows.Count > 0 && resultStr.ToString() != "[]")
+ {
+ res.Data = resultStr;
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ log.Error("转换失败:" + ex.ToString());
+ res.Success = false;
+ res.Message = ex.Message;
+ }
+ finally
+ {
+ str = JsonConvert.SerializeObject(res);
+ result.Content = new StringContent(str, Encoding.GetEncoding("UTF-8"), "application/json");
+ }
+ log.Debug("调拨单返回值:" + str);
+ return result;
+ }
+ #endregion
+
+
#region 登录 login
///
/// 登录