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.
 
 
 
 
 

7695 lines
410 KiB

using ICSSoft.Common;
using ICSSoft.Entity;
using ICSSoft.Entity;
using Newtonsoft.Json;
using NFine.Code;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using static ICSSoft.Entity.LOTCreateIModel;
namespace ICSSoft.DataProject
{
/// <summary>
/// WMS条码信息
/// </summary>
public class WMSBarCoreService
{
private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
private static string connString = System.Configuration.ConfigurationManager.AppSettings["ConnStr"];
private static string ERPDB = System.Configuration.ConfigurationManager.AppSettings["ERPDB"];
DataTable table = null;
SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
string sql = string.Empty;
string sqlInfo = string.Empty;
VerificationMethod verification = new VerificationMethod();
#region 多语言
/// <summary>
/// 多语言查询
/// </summary>
/// <param name="JsonData"></param>
/// <returns></returns>
public List<WMSBarCoreModel> Get(WMSBarCoreModel JsonData)
{
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
try
{
sql = @"select cnValue AS Name,Code from Sys_Language where 1=1";
if (!string.IsNullOrWhiteSpace(JsonData.Code))
{
sql += " and Code='{0}'";
}
sql = string.Format(sql, JsonData.Code);
table = DBHelper.SQlReturnData(sql, cmd);
string json = JsonConvert.SerializeObject(table);
List<WMSBarCoreModel> model = JsonConvert.DeserializeObject<List<WMSBarCoreModel>>(json);
cmd.Transaction.Commit();
return model;
}
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();
}
}
#endregion
#region 源头单据信息
/// <summary>
/// 源头单据信息
/// </summary>
/// <param name="JsonData"></param>
/// <returns></returns>
public object DocumentGet(WMSSourceDocumentModel JsonData)
{
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
string jsonInfo = null;
int num = 0;
try
{
sql = @"select * from {0} ";
switch (JsonData.TransType )
{
case "送货单":
string sqlInfoList = @"select * from ICSASNDetail where ASNCode='{0}' and WorkPoint='{1}'";
sqlInfoList = string.Format(sqlInfoList, JsonData.TransCode, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sqlInfoList, cmd);
if (table.Rows.Count <= 0)
{
throw new Exception("源头单据不存在!");
}
else
{
sqlInfo += @" SELECT a.[ID],
b.TransCode as TransCode ,
c.ID as DetailID,
b.TransSequence as TransSequence,
c.InvCode as InvCode,
d.InvName as InvName,
d.InvStd as InvStd,
a.[Quantity] as Quantity,
d.InvUnit as InvUnit,
a.Amount as Amount,
d.AmountUnit as AmountUnit,
c.ExtensionID as BatchCode,
d.InvVersion as InvVersion,
d.InvBrand as InvBrand,
c.VenCode as cFree1,
c.DepCode as cFree2,
c.POCode as cFree3,
c.UnitPrice as cFree4,
c.Currency as cFree5,
c.DepCode as cFree6,
c.VenCode as cFree7,
a.LotNo,
a.ASNCode
FROM {0} a
left join ICSInventoryLotDetail b on a.LotNo=b.LotNo and a.WorkPoint=b.WorkPoint
left join ICSPurchaseOrder c on b.TransCode = c.POCode and b.WorkPoint=c.WorkPoint and b.TransSequence=c.Sequence
left join ICSInventory d on c.InvCode = d.InvCode and c.WorkPoint=d.WorkPoint where 1 = 1 and a.ASNCode='{1}' and a.WorkPoint='{2}'";
sqlInfo = string.Format(sqlInfo, TransTypeEnum.ICSASNDetail, JsonData.TransCode, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sqlInfo, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var modelInfo = JsonConvert.DeserializeObject(jsonInfo);
return modelInfo;
}
case "委外送货单":
sql = @"select
a.ID,
H.ContainerCODE,
H.ContainerName,
b.InvCode,
F.InvName,
F.InvStd,
a.Quantity,
F.InvUnit,
F.AmountUnit,
E.ProjectCode,
E.BatchCode,
E.Version,
E.Brand,
a.OASNCode as TransCode,--来源单据
a.Sequence as TransSequence,--来源行号
A.LotNo,
E.cFree1,
E.cFree2,
E.cFree3,
E.cFree4,
E.cFree5,
E.cFree6,
E.cFree7,
E.cFree8,
E.cFree9,
E.cFree10,
o.VenCode,
isnull((k.UnitPrice),0) as UnitPrice,
isnull((k.Currency), ' ') as Currency,
isnull((k.DepCode), ' ') as DepCode,
isnull(( k.PersonCode), ' ') asPersonCode
from ICSOASNDetail a
left join ICSInventoryLot b on A.LotNo =B.LotNo
LEFT JOIN ICSInventoryLotDetail c ON A.LotNo =c.LotNo
LEFT JOIN ICSExtension E ON E.ID=b.ExtensionID
LEFT JOIN ICSInventory F ON b.InvCode=F.InvCode
LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
LEFT JOIN ICSContainer H ON H.ContainerID=G.ID
inner join ICSOASN O on o.OASNCode=a.OASNCode
LEFT JOIN ICSOutsourcingOrder k on k.OOCode=TransCode and c.TransSequence=k.Sequence
where 1 = 1 and a.OASNCode='{0}' and a.WorkPoint='{1}'";
sql = string.Format(sql, JsonData.TransCode, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sql, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var ReceiveTransq = JsonConvert.DeserializeObject(jsonInfo);
return ReceiveTransq;
case "一步式调拨单":
string sqlkk = @"select * from ICSTransfer where TransferNO='{0}' and WorkPoint='{1}'";
sqlkk = string.Format(sqlkk, JsonData.TransCode, JsonData.WorkPoint);
DataTable dataDt = DBHelper.SQlReturnData(sqlkk, cmd);
if (dataDt.Rows.Count <= 0)
{
throw new Exception("调拨单不存在");
}
else
{
sqlInfo = @"select
a.ID as ID,
a.TransferNO as TransCode,
a.Sequence as TransSequence,
a.InvCode as InvCode,
c.InvName as InvName,
c.InvStd as InvStd,
a.Quantity as Quantity,
c.InvUnit as InvUnit,
a.Amount as Amount,
c.AmountUnit as AmountUnit,
a.ToWarehouseCode ,
a.FromWarehouseCode,
a.ToLocationCode as LocationCode,
--f.WarehouseName as WHName,
c.InvVersion as Version,
c.InvBrand as Brand,
a.TransferQuantity as IssueQuantity ,
a.MUSER as MUSER,
a.MTIME as MTime
from ICSTransfer a --主表
left join ICSExtension b on a.ExtensionID=b.id and a.WorkPoint=b.WorkPoint--条码
left join ICSInventory c on c.InvCode=a.InvCode and c.WorkPoint=b.WorkPoint--y源头单据
left join ICSWarehouse e on e.WarehouseCode =a.FromWarehouseCode and e.WorkPoint=a.WorkPoint
where a.TransferNO='{0}' and a.WorkPoint='{1}'";
sqlInfo = string.Format(sqlInfo, JsonData.TransCode, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sqlInfo, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var ReceiveTrans = JsonConvert.DeserializeObject(jsonInfo);
return ReceiveTrans;
}
case "委外订单备料表":
sqlInfo = @"select
a.ID as ID,
a.OODetailID as TransCode,
b.Sequence+'-'+a.Sequence as TransSequence,
a.InvCode as InvCode,
c.InvName as InvName,
c.InvStd as InvStd,
a.Quantity as Quantity,
c.InvUnit as InvUnit,
a.Amount as Amount,
c.AmountUnit as AmountUnit,
a.WHCode as WHCode,
d.WarehouseName as WHName,
c.InvVersion as Version,
c.InvBrand as Brand,
a.IssueQuantity ,
a.MUSER as MUSER,
a.MTIME as MTime
from ICSOOPick a --主表
left join ICSOutsourcingOrder b on a.OODetailID=b.OODetailID AND a.WorkPoint=b.WorkPoint
left join ICSInventory c on a.InvCode=c.InvCode AND a.WorkPoint=c.WorkPoint
left join ICSWarehouse d on d.WarehouseCode =a.WHCode AND d.WorkPoint=a.WorkPoint
where b.OOCode='{0}' and b.WorkPoint='{1}'";
sqlInfo = string.Format(sqlInfo, JsonData.TransCode, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sqlInfo, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var modelInfoList = JsonConvert.DeserializeObject(jsonInfo);
return modelInfoList;
case "委外领料申请单":
sqlInfo = @"select
a.ID as ID,
c.TransCode as TransCode,
c.TransSequence as TransSequence,
a.InvCode as InvCode,
e.InvName as InvName,
e.InvStd as InvStd,
a.Quantity as Quantity,
e.InvUnit as InvUnit,
a.Amount as Amount,
e.AmountUnit as AmountUnit,
a.WHCode as WHCode,
f.WarehouseName as WHName,
e.InvVersion as Version,
e.InvBrand as Brand,
a.IssueQuantity ,
a.MUSER as MUSER,
a.MTIME as MTime
from {0} a --主表
left join ICSInventoryLot b on a.ExtensionID=b.ExtensionID and a.WorkPoint=b.WorkPoint--条码
left join ICSInventoryLotDetail c on c.LotNo=b.LotNo and c.WorkPoint=b.WorkPoint--y源头单据
left join ICSInventory e on e.InvCode=a.InvCode and e.WorkPoint=a.WorkPoint--料品
left join ICSWarehouse f on f.WarehouseCode =a.WHCode and f.WorkPoint=a.WorkPoint--仓库
where 1=1 and a.Status='2'";
sqlInfo += " and a.ApplyCode='{1}' and a.WorkPoint='{2}'";
sqlInfo = string.Format(sqlInfo, TransTypeEnum.ICSMOApply, JsonData.TransCode, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sqlInfo, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var Info = JsonConvert.DeserializeObject(jsonInfo);
return Info;
case "材料出库":
sql = @"select
a.ID as ID,
c.TransCode as TransCode,
c.TransSequence as TransSequence,
a.InvCode as InvCode,
e.InvName as InvName,
e.InvStd as InvStd,
a.Quantity as Quantity,
e.InvUnit as InvUnit,
a.Amount as Amount,
e.AmountUnit as AmountUnit,
a.WHCode as WHCode,
f.WarehouseName as WHName,
e.InvVersion as Version,
e.InvBrand as Brand,
a.IssueQuantity as IssueQuantity ,
a.MUSER as MUSER,
a.MTIME as MTime,
a.Status
from ICSMOIssue a --主表
left join ICSInventoryLot b on a.ExtensionID=b.ExtensionID and a.WorkPoint=b.WorkPoint--条码
left join ICSInventoryLotDetail c on c.LotNo=b.LotNo and c.WorkPoint=b.WorkPoint--y源头单据
left join ICSInventory e on e.InvCode=a.InvCode and e.WorkPoint=a.WorkPoint--料品
left join ICSWarehouse f on f.WarehouseCode =a.WHCode and f.WorkPoint=a.WorkPoint
where a.Status='2' and a.SDNCode='{1}' and a.WorkPoint='{2}'";
sql = string.Format(sql, JsonData.TransCode, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sql, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var Issue = JsonConvert.DeserializeObject(jsonInfo);
return Issue;
case "销售发货":
sql = @"select
a.ID as ID,
a.SDNCode as TransCode,
b.ID as DetailID ,
a.Sequence as TransSequence,
b.InvCode as InvCode,
b.InvName as InvName,
b.InvStd as InvStd,
a.Quantity as Quantity,
b.InvUnit as InvUnit,
a.Amount as Amount,
a.SDNQuantity as IssueQuantity,
b.AmountUnit,
d.WarehouseCode as WHCode,
d.WarehouseName as WHName,
c.ProjectCode,
c.BatchCode,
c.Version,
c.Brand,
c.cFree1,
c.cFree2,
c.cFree3,
c.cFree4,
c.cFree5,
c.cFree6,
c.cFree7,
c.cFree8,
c.cFree9,
c.cFree10,
a.Type,
a.MUSER,
a.MTIME as MTime
from ICSSDN a
left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
left join ICSExtension c on c.ID=a.ExtensionID and c.WorkPoint=a.WorkPoint
left join ICSWarehouse d on d.WarehouseCode=a.WHCode and d.WorkPoint=a.WorkPoint
WHERE type ='1' ";
sql += " and a.SDNCode='{0}' and a.WorkPoint='{1}'";
sql = string.Format(sql, JsonData.TransCode, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sql, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var ICSSDN = JsonConvert.DeserializeObject(jsonInfo);
return ICSSDN;
case "生产订单备料表":
sql = @"select
a.ID as ID,
d.MOCode as TransCode,
d.MODetailID as IDDetailID,
d.Sequence+'-'+a.Sequence as TransSequence,
a.InvCode as InvCode,
e.InvName as InvName,
e.InvStd as InvStd,
a.Quantity as Quantity,
e.InvUnit as InvUnit,
isnull((a.Amount),0)as Amount,
e.AmountUnit as AmountUnit,
a.WHCode as WHCode,
f.WarehouseName as WHName,
e.InvVersion as Version,
e.InvBrand as Brand,
isnull((a.IssueQuantity),0)as IssueQuantity,
a.MUSER as MUSER,
a.MTIME as MTime,
a.WorkPoint,
a.Sequence
from {0} a --主表
INNER JOIN ICSMO d on d.id=a.MODetailID and d.WorkPoint=a.WorkPoint-- 表体标识
INNER JOIN ICSInventory e on e.InvCode=d.InvCode and e.WorkPoint=a.WorkPoint--料品
LEFT JOIN ICSWarehouse f on f.WarehouseCode =a.WHCode and f.WorkPoint=a.WorkPoint--仓库
where 1=1 ";
sql += " and d.MOCode='{1}' and a.WorkPoint='{2}'";
sql = string.Format(sql, TransTypeEnum.ICSMOPick, JsonData.TransCode, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sql, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var MOPic = JsonConvert.DeserializeObject(jsonInfo);
return MOPic;
case "委外材料出库":
sqlInfo = @"select
a.ID as ID,
c.TransCode as TransCode,
c.TransSequence as TransSequence,
a.InvCode as InvCode,
e.InvName as InvName,
e.InvStd as InvStd,
a.Quantity as Quantity,
e.InvUnit as InvUnit,
a.Amount as Amount,
e.AmountUnit as AmountUnit,
a.WHCode as WHCode,
f.WarehouseName as WHName,
e.InvVersion as Version,
e.InvBrand as Brand,
a.IssueQuantity ,
a.MUSER as MUSER,
a.MTIME as MTime
from {0} a --主表
left join ICSInventoryLot b on a.ExtensionID=b.ExtensionID and a.WorkPoint=b.WorkPoint--条码
left join ICSInventoryLotDetail c on c.LotNo=b.LotNo and c.WorkPoint=b.WorkPoint--y源头单据
left join ICSInventory e on e.InvCode=a.InvCode and e.WorkPoint=a.WorkPoint--料品
left join ICSWarehouse f on f.WarehouseCode =a.WHCode and f.WorkPoint=a.WorkPoint--仓库
where 1=1 and a.Status='2'";
sqlInfo += " and a.IssueCode='{1}' and a.WorkPoint='{2}'";
sqlInfo = string.Format(sqlInfo, TransTypeEnum.ICSOIssue, JsonData.TransCode, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sqlInfo, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
//sqlInfo = string.Format(sqlInfo, Type.ICSMOApply, JsonData.TransCode);
var ICSOIssue = JsonConvert.DeserializeObject(jsonInfo);
return ICSOIssue;
case "杂发单":
sql = @"select
a.ID as ID,
c.TransCode as TransCode,
c.TransSequence as TransSequence,
a.InvCode as InvCode,
e.InvName as InvName,
e.InvStd as InvStd,
a.Quantity as Quantity,
e.InvUnit as InvUnit,
a.Amount as Amount,
e.AmountUnit as AmountUnit,
a.WHCode as WHCode,
f.WarehouseName as WHName,
e.InvVersion as Version,
e.InvBrand as Brand,
a.OutQuantity as IssueQuantity ,
a.MUSER as MUSER,
a.MTIME as MTime
from ICSOtherOut a --主表
left join ICSInventoryLot b on a.ExtensionID=b.ExtensionID and a.WorkPoint=b.WorkPoint--条码
left join ICSInventoryLotDetail c on c.LotNo=b.LotNo and c.WorkPoint=b.WorkPoint--y源头单据
left join ICSInventory e on e.InvCode=a.InvCode and e.WorkPoint=a.WorkPoint--料品
left join ICSWarehouse f on f.WarehouseCode =a.WHCode and f.WorkPoint=a.WorkPoint
where a.Status='2' and a.OutCode='{0}' and a.WorkPoint='{1}'";
sql = string.Format(sql, JsonData.TransCode, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sql, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
//sqlInfo = string.Format(sqlInfo, Type.ICSMOApply, JsonData.TransCode);
var ItherOut = JsonConvert.DeserializeObject(jsonInfo);
return ItherOut;
case "采购退货单":
sqlInfo += @"select a.ID,
a.InvCode,
C.InvName,
C.InvStd,
a.Quantity ,
C.InvUnit,
a.Amount AS AmountUnit,
--l.WarehouseCode,
--l.WarehouseName,
--j.LocationCode,
--j.LocationName,
a.RCVQuantity as IssueQuantity,
a.Sequence as TransSequence,
b.ProjectCode,
b.BatchCode,
b.Version,
b.Brand,
b.cFree1,
b.cFree2,
b.cFree3,
b.cFree4,
b.cFree5,
b.cFree6,
b.cFree7,
b.cFree8,
b.cFree9,
b.cFree10
from ICSDeliveryNotice a
left join ICSExtension b on a.ExtensionID=b.ID
LEFT JOIN ICSInventory C ON A.InvCode =C.InvCode where 1 = 1 ";
sqlInfo += " and A.DNType='2' AND a.dncode='{0}' and A.WorkPoint='{1}'";
sqlInfo = string.Format(sqlInfo, JsonData.TransCode, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sqlInfo, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var Receive = JsonConvert.DeserializeObject(jsonInfo);
return Receive;
case "委外红字入库单":
sql += " and a.RCVCode='{1}' and Type=2";
sql = string.Format(sql, TransTypeEnum.ICSOutsourcingReceive, JsonData.TransCode);
break;
case "销售退货":
sqlInfo = @"select
a.ID as ID,
a.SDNCode as TransCode,
b.ID as DetailID ,
a.Sequence as TransSequence,
b.InvCode as InvCode,
b.InvName as InvName,
b.InvStd as InvStd,
a.Quantity as Quantity,
b.InvUnit as InvUnit,
a.Amount as Amount,
a.SDNQuantity as IssueQuantity,
b.AmountUnit,
d.WarehouseCode as WHCode,
d.WarehouseName as WHName,
c.ProjectCode,
c.BatchCode,
c.Version,
c.Brand,
c.cFree1,
c.cFree2,
c.cFree3,
c.cFree4,
c.cFree5,
c.cFree6,
c.cFree7,
c.cFree8,
c.cFree9,
c.cFree10,
a.Type,
a.MUSER,
a.MTIME as MTime
from {0} a
left join ICSInventory b on a.InvCode=b.InvCode and a.WorkPoint=b.WorkPoint
left join ICSExtension c on c.ID=a.ExtensionID and c.WorkPoint=a.WorkPoint
left join ICSWarehouse d on d.WarehouseCode=a.WHCode and d.WorkPoint=a.WorkPoint
WHERE type ='2' ";
sqlInfo += " and a.SDNCode='{1}' and a.WorkPoint='{2}'";
sqlInfo = string.Format(sqlInfo, TransTypeEnum.ICSSDN, JsonData.TransCode, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sqlInfo, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var ICSSDNInfo = JsonConvert.DeserializeObject(jsonInfo);
return ICSSDNInfo;
case "两步式调拨单":
sql = @"select
a.ID as ID,
c.TransCode as TransCode,
c.TransSequence as TransSequence,
a.InvCode as InvCode,
e.InvName as InvName,
e.InvStd as InvStd,
a.Quantity as Quantity,
e.InvUnit as InvUnit,
a.Amount as Amount,
e.AmountUnit as AmountUnit,
a.FromWarehouseCode as WHCode,
f.WarehouseName as WHName,
e.InvVersion as Version,
e.InvBrand as Brand,
a.TransferQuantity as IssueQuantity ,
a.MUSER as MUSER,
a.MTIME as MTime
from ICSTransfer a --主表
left join ICSInventoryLot b on a.ExtensionID=b.ExtensionID and a.WorkPoint=b.WorkPoint--条码
left join ICSInventoryLotDetail c on c.LotNo=b.LotNo and c.WorkPoint=b.WorkPoint--y源头单据
left join ICSInventory e on e.InvCode=a.InvCode and e.WorkPoint=a.WorkPoint--料品
left join ICSWarehouse f on f.WarehouseCode =a.FromWarehouseCode and f.WorkPoint=a.WorkPoint";
sql += " and a.TransferNO='{0}' and Type=2 and a.WorkPoint='{1}'";
sql = string.Format(sql, JsonData.TransCode, JsonData.WorkPoint);
break;
case "采购红字入库单":
sql = @"SELECT
a.[ID],
b.TransCode as TransCode ,
c.ID as DetailID,
b.TransSequence as TransSequence,
c.InvCode as InvCode,
d.InvName as InvName,
d.InvStd as InvStd,
a.[Quantity] as Quantity,
d.InvUnit as InvUnit,
a.Amount as Amount,
d.AmountUnit as AmountUnit,
c.ExtensionID as BatchCode,
d.InvVersion as InvVersion,
d.InvBrand as InvBrand,
c.VenCode as cFree1,
c.DepCode as cFree2,
c.POCode as cFree3,
c.UnitPrice as cFree4,
c.Currency as cFree5,
c.DepCode as cFree6,
c.VenCode as cFree7,
b.LotNo,a.RCVQuantity as IssueQuantity
FROM {0} a
left join ICSInventoryLotDetail b on a.SourceCode = b.TransCode and a.WorkPoint=b.WorkPoint
left join ICSPurchaseOrder c on b.TransCode = c.POCode and b.WorkPoint=c.WorkPoint
left join ICSInventory d on c.InvCode = d.InvCode and c.WorkPoint=d.WorkPoint where 1 = 1 and a.Status = '2' and a.type = '红字入库单'";
sql += " and a.RCVCode='{1}' and a.WorkPoint='{2}'";
sql = string.Format(sql, TransTypeEnum.ICSPurchaseReceive, JsonData.TransCode);
break;
case "委外退货单":
sqlInfo = @" SELECT
a.[ID],--表头唯一标识
a.ODNCode as TransCode ,--源头单据号
--c.ID as DetailID,--表体唯一标识
a.Sequence as TransSequence,--源头单据行号
a.InvCode as InvCode ,--料品编码
b.InvName as InvName,
b.InvStd as InvStd,
a.[Quantity] as Quantity,
b.InvUnit as InvUnit,
a.Amount as Amount,
b.AmountUnit as AmountUnit,
c.ProjectCode as ProjectCode,
c.BatchCode as BatchCode,
c.Version as Version,
c.Brand as Brand,
a.RCVQuantity as IssueQuantity,
c.cFree1,
c.cFree2,
c.cFree3,
c.cFree4,
c.cFree5,
c.cFree6,
c.cFree7,
c.cFree8,
c.cFree9,
c.cFree10
FROM ICSODeliveryNotice a --退货
LEFT JOIN ICSInventory B ON A.InvCode=B.InvCode and a.WorkPoint=b.WorkPoint--料品表
LEFT JOIN ICSExtension C ON A.ExtensionID=C.ID and a.WorkPoint=c.WorkPoint--源头单据
where a.ODNType='2' and a.ODNCode='{0}' and a.WorkPoint='{1}'";
sqlInfo = string.Format(sqlInfo, JsonData.TransCode, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sqlInfo, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var Notice = JsonConvert.DeserializeObject(jsonInfo);
return Notice;
case "盘点":
bool ischeck = verification.isCheck(JsonData.TransCode, JsonData.WorkPoint);
if (ischeck == true)
{
sqlInfo = @"SELECT
a.[ID],--表头唯一标识
f.CheckCode as TransCode ,--源头单据号
--c.ID as DetailID,--表体唯一标识
e.TransCode as TransSequence,--源头单据行号
f.InvCode as InvCode ,--料品编码
b.InvName as InvName,
b.InvStd as InvStd,
a.[Quantity] as Quantity,
b.InvUnit as InvUnit,
f.Amount as Amount,
b.AmountUnit as AmountUnit,
d.ProjectCode as ProjectCode,
d.BatchCode as BatchCode,
d.Version as Version,
d.Brand as Brand,
f.ActualQuantity as IssueQuantity,
d.cFree2,
d.cFree3,
d.cFree4,
d.cFree5,
d.cFree6,
d.cFree7,
d.cFree8,
d.cFree9,
d.cFree10
FROM ICSWareHouseLotInfo a
left join ICSCheck f on f.WHCode=a.WarehouseCode and a.InvCode=f.InvCode
LEFT JOIN ICSInventory B ON f.InvCode=B.InvCode and a.WorkPoint=b.WorkPoint--料品表
left join ICSInventoryLot c on c.lotno=a.lotno and a.WorkPoint=c.WorkPoint
LEFT JOIN ICSExtension d ON c.ExtensionID=d.ID and a.WorkPoint=c.WorkPoint--源头单据
left join ICSInventoryLotDetail e on c.LotNo=e.LotNo and c.WorkPoint=e.WorkPoint
where f.CheckCode='{0}' and a.WorkPoint='{1}' ";
sqlInfo = string.Format(sqlInfo, JsonData.TransCode, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sqlInfo, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var Noticec = JsonConvert.DeserializeObject(jsonInfo);
return Noticec;
}
return false;
case "其它出库":
bool ischecks = verification.IsOtherOut(JsonData.TransCode, JsonData.WorkPoint);
if (ischecks == true)
{
sqlInfo = @"SELECT
a.[ID],--表头唯一标识
f.OutCode as TransCode ,--源头单据号
--c.ID as DetailID,--表体唯一标识
f.Sequence as TransSequence,--源头单据行号
f.InvCode as InvCode ,--料品编码
b.InvName as InvName,
b.InvStd as InvStd,
a.[Quantity] as Quantity,
b.InvUnit as InvUnit,
f.Amount as Amount,
b.AmountUnit as AmountUnit,
d.ProjectCode as ProjectCode,
d.BatchCode as BatchCode,
d.Version as Version,
d.Brand as Brand,
f.OutQuantity as IssueQuantity,
d.cFree2,
d.cFree3,
d.cFree4,
d.cFree5,
d.cFree6,
d.cFree7,
d.cFree8,
d.cFree9,
d.cFree10
FROM ICSWareHouseLotInfo a
left join ICSOtherOut f on f.WHCode=a.WarehouseCode and a.InvCode=f.InvCode
LEFT JOIN ICSInventory B ON f.InvCode=B.InvCode and a.WorkPoint=b.WorkPoint--料品表
left join ICSInventoryLot c on c.lotno=a.lotno and a.WorkPoint=c.WorkPoint
LEFT JOIN ICSExtension d ON c.ExtensionID=d.ID and a.WorkPoint=c.WorkPoint--源头单据
where f.OutCode='{0}' and a.WorkPoint='{1}' ";
sqlInfo = string.Format(sqlInfo, JsonData.TransCode, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sqlInfo, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var OtherOut = JsonConvert.DeserializeObject(jsonInfo);
return OtherOut;
}
return false;
case "拆卸单":
bool isDisassemblyDoc = verification.isBoolDisassemblyDoc(JsonData.TransCode, JsonData.WorkPoint);
if (isDisassemblyDoc == true)
{
sqlInfo = @"SELECT
a.[ID],--表头唯一标识
a.DABDOCCode as TransCode ,--源头单据号
a.Sequence as TransSequence,--源头单据行号
a.Quantity as Quantity,
a.Amount as Amount,
a.InvCode as InvCode ,
a.DABDOCQuantity as IssueQuantity,
b.InvName as InvName,--料品编码
b.InvStd as InvStd,
b.InvUnit as InvUnit,
b.AmountUnit as AmountUnit,
c.ProjectCode as ProjectCode,--自由项
c.BatchCode as BatchCode,
c.Version as Version,
c.Brand as Brand,
c.cFree2,
c.cFree3,
c.cFree4,
c.cFree5,
c.cFree6,
c.cFree7,
c.cFree8,
c.cFree9,
c.cFree10
FROM ICSDisassemblyDoc a
left join ICSInventory b on b.InvCode=a.InvCode
LEFT JOIN ICSExtension c ON a.ExtensionID=c.id and a.WorkPoint=c.WorkPoint--自由项
where a.DABDOCCode='{0}' and a.WorkPoint='{1}' ";
sqlInfo = string.Format(sqlInfo, JsonData.TransCode, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sqlInfo, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var Doc = JsonConvert.DeserializeObject(jsonInfo);
return Doc;
}
return null;
case "两步调入":
sqlInfo = @"SELECT
a.[ID],--表头唯一标识
f.InCode as TransCode ,--源头单据号
--c.ID as DetailID,--表体唯一标识
f.Sequence as TransSequence,--源头单据行号
f.InvCode as InvCode ,--料品编码
b.InvName as InvName,
b.InvStd as InvStd,
a.[Quantity] as Quantity,
b.InvUnit as InvUnit,
f.Amount as Amount,
b.AmountUnit as AmountUnit,
d.ProjectCode as ProjectCode,
d.BatchCode as BatchCode,
d.Version as Version,
d.Brand as Brand,
f.InQuantity as IssueQuantity,
d.cFree2,
d.cFree3,
d.cFree4,
d.cFree5,
d.cFree6,
d.cFree7,
d.cFree8,
d.cFree9,
d.cFree10,
F.WHCode
from ICSWareHouseLotInfo a
left join ICSOtherIn f on f.WHCode=a.WarehouseCode and a.InvCode=f.InvCode
LEFT JOIN ICSInventory B ON f.InvCode=B.InvCode and a.WorkPoint=b.WorkPoint--料品表
left join ICSInventoryLot c on c.lotno=a.lotno and a.WorkPoint=c.WorkPoint
LEFT JOIN ICSExtension d ON c.ExtensionID=d.ID and a.WorkPoint=c.WorkPoint
where f.InCode='{0}' and f.WorkPoint='{1}'";
sqlInfo = string.Format(sqlInfo, JsonData.TransCode, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sqlInfo, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var OtherEnter = JsonConvert.DeserializeObject(jsonInfo);
return OtherEnter;
case "两步调出":
sqlInfo = @"SELECT
a.[ID],--表头唯一标识
f.OutCode as TransCode ,--源头单据号
--c.ID as DetailID,--表体唯一标识
f.Sequence as TransSequence,--源头单据行号
f.InvCode as InvCode ,--料品编码
b.InvName as InvName,
b.InvStd as InvStd,
a.[Quantity] as Quantity,
b.InvUnit as InvUnit,
f.Amount as Amount,
b.AmountUnit as AmountUnit,
d.ProjectCode as ProjectCode,
d.BatchCode as BatchCode,
d.Version as Version,
d.Brand as Brand,
f.OutQuantity as IssueQuantity,
d.cFree2,
d.cFree3,
d.cFree4,
d.cFree5,
d.cFree6,
d.cFree7,
d.cFree8,
d.cFree9,
d.cFree10
from ICSWareHouseLotInfo a
left join ICSOtherOut f on f.WHCode=a.WarehouseCode and a.InvCode=f.InvCode
LEFT JOIN ICSInventory B ON f.InvCode=B.InvCode and a.WorkPoint=b.WorkPoint--料品表
left join ICSInventoryLot c on c.lotno=a.lotno and a.WorkPoint=c.WorkPoint
LEFT JOIN ICSExtension d ON c.ExtensionID=d.ID and a.WorkPoint=c.WorkPoint
where f.OutCode='{0}' and f.WorkPoint='{1}'";
sqlInfo = string.Format(sqlInfo, JsonData.TransCode, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sqlInfo, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var Otheroutr = JsonConvert.DeserializeObject(jsonInfo);
return Otheroutr;
}
table = DBHelper.SQlReturnData(sql, cmd);
string json = JsonConvert.SerializeObject(table);
var model = JsonConvert.DeserializeObject(json);//<List<WMSSourceDocumentModel>>
cmd.Transaction.Commit();
return model;
}
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();
}
}
#endregion
#region 获取条码信息
/// <summary>
/// 获取条码信息
/// </summary>
/// <param name="JsonData"></param>
/// <returns></returns>
public object BarCodeGet(BarCodeModel JsonData)
{
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
try
{
switch (JsonData.TransType)
{
#region 委外退料单
case "委外退料单":
verification.LotoOut(JsonData.Code, JsonData.WorkPoint);
double numLotoInfo = verification.LotoTest(JsonData.Code, JsonData.WorkPoint);
verification.HouseLotoOut(JsonData.Code, JsonData.WorkPoint);
if (numLotoInfo == 0.0)
{
sql = @"select
a.ID,
H.ContainerCODE,
H.ContainerName,
A.InvCode,
F.InvName,
F.InvStd,
a.Quantity,
F.InvUnit,
F.AmountUnit,
E.ProjectCode,
E.BatchCode,
E.Version,
E.Brand,
l.OApplyNegCode as TransCode,--来源单据
l.Sequence as TransSequence,--来源行号
A.LotNo,
E.cFree1,
E.cFree2,
E.cFree3,
E.cFree4,
E.cFree5,
E.cFree6,
E.cFree7,
E.cFree8,
E.cFree9,
E.cFree10
FROM ICSInventoryLot A
LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
LEFT JOIN ICSContainer H ON H.ContainerID=G.ID
inner join ICSOApplyNegDetail l on l.OApplyNegCode=b.TransCode and l.Sequence=b.TransSequence";
}
else
{
sql = @"select
a.ID,
H.ContainerCODE,
H.ContainerName,
A.InvCode,
F.InvName,
F.InvStd,
'{2}' as a.Quantity,
F.InvUnit,
F.AmountUnit,
E.ProjectCode,
E.BatchCode,
E.Version,
E.Brand,
l.OApplyNegCode as TransCode,--来源单据
l.Sequence as TransSequence,--来源行号
A.LotNo,
E.cFree1,
E.cFree2,
E.cFree3,
E.cFree4,
E.cFree5,
E.cFree6,
E.cFree7,
E.cFree8,
E.cFree9,
E.cFree10
FROM ICSInventoryLot A
LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
LEFT JOIN ICSContainer H ON H.ContainerID=G.ID
inner join ICSOApplyNegDetail l on l.OApplyNegCode=b.TransCode and l.Sequence=b.TransSequence";
}
sql += " and a.LotNo='{0}' and a.WorkPoint='{1}' ";
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint, numLotoInfo);
table = DBHelper.SQlReturnData(sql, cmd);
string jsonICSMOs = JsonConvert.SerializeObject(table);
var ICSMOa = JsonConvert.DeserializeObject(jsonICSMOs);
return ICSMOa;
#endregion
#region 委外订单
case "委外订单":
verification.LotoOut(JsonData.Code, JsonData.WorkPoint);
double numLoto = verification.LotoTest(JsonData.Code, JsonData.WorkPoint);
if (numLoto == 0.0)
{
sql = @"select
a.ID,
H.ContainerCODE,
H.ContainerName,
A.InvCode,
F.InvName,
F.InvStd,
a.Quantity,
F.InvUnit,
F.AmountUnit,
E.ProjectCode,
E.BatchCode,
E.Version,
E.Brand,
l.OOCode as TransCode,--来源单据
l.Sequence as TransSequence,--来源行号
A.LotNo,
E.cFree1,
E.cFree2,
E.cFree3,
E.cFree4,
E.cFree5,
E.cFree6,
E.cFree7,
E.cFree8,
E.cFree9,
E.cFree10
FROM ICSInventoryLot A
LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
LEFT JOIN ICSContainer H ON H.ContainerID=G.ID
left join ICSOutsourcingOrder l on l.OOCode=b.TransCode and l.Sequence=b.TransSequence where 1=1";
}
else
{
sql = @"select
a.ID,
H.ContainerCODE,
H.ContainerName,
A.InvCode,
F.InvName,
F.InvStd,
'{2}' as a.Quantity,
F.InvUnit,
F.AmountUnit,
E.ProjectCode,
E.BatchCode,
E.Version,
E.Brand,
l.OOCode as TransCode,--来源单据
l.Sequence as TransSequence,--来源行号
A.LotNo,
E.cFree1,
E.cFree2,
E.cFree3,
E.cFree4,
E.cFree5,
E.cFree6,
E.cFree7,
E.cFree8,
E.cFree9,
E.cFree10
FROM ICSInventoryLot A
LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
LEFT JOIN ICSContainer H ON H.ContainerID=G.ID
left join ICSOutsourcingOrder l on l.OOCode=b.TransCode and l.Sequence=b.TransSequence where 1=1";
}
sql += " and a.LotNo='{0}' and a.WorkPoint='{1}' ";
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint, numLoto);
table = DBHelper.SQlReturnData(sql, cmd);
string jsonNegReceive = JsonConvert.SerializeObject(table);
var ApplyNegjsonNegReceive = JsonConvert.DeserializeObject(jsonNegReceive);//<List<WMSSourceDocumentModel>>
return ApplyNegjsonNegReceive;
#endregion
#region 委外送货单
case "委外送货单 ":
sql += " and c.LotNo='{1}' and a.WorkPoint='{2}' ";
sql = string.Format(sql, TransTypeEnum.ICSODeliveryNotice, JsonData.Code, JsonData.WorkPoint);
break;
#endregion
#region 退料单
case "退料单":
sql = @"
select a.ID,
a.InvCode,
a.Quantity,
d.ProjectCode,
d.BatchCode,
d.Version,
d.Brand,
c.ApplyNegCode as TransCode,--来源单据
c.Sequence as TransSequence,--来源行号
a.LotNo,
d.cFree1,
d.cFree2,
d.cFree3,
d.cFree4,
d.cFree5,
d.cFree6,
d.cFree7,
d.cFree8,
d.cFree9,
d.cFree10
from ICSInventoryLot a
left join ICSInventoryLotDetail b on a.LotNo=b.LotNo
left join ICSMOApplyNegDetail c on c.ApplyNegCode=b.TransCode and c.Sequence=b.TransSequence
left join ICSExtension d on d.ID=a.ExtensionID
where 1=1 and a.LotNo='{1}' and a.WorkPoint='{2}'";
sql = string.Format(sql, TransTypeEnum.ICSMOApplyNegDetail, JsonData.Code, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sql, cmd);
string jsonNeg = JsonConvert.SerializeObject(table);
var ApplyNeg = JsonConvert.DeserializeObject(jsonNeg);//<List<WMSSourceDocumentModel>>
cmd.Transaction.Commit();
return ApplyNeg;
#endregion
#region 生产订单
case "生产订单":
//verification.HouseLotInvCode();
sql = @"select
a.ID,
H.ContainerCODE,
H.ContainerName,
A.InvCode,
F.InvName,
F.InvStd,
a.Quantity,
F.InvUnit,
F.AmountUnit,
E.ProjectCode,
E.BatchCode,
E.Version,
E.Brand,
c.MOCode as TransCode,--来源单据
c.Sequence as TransSequence,--来源行号
A.LotNo,
E.cFree1,
E.cFree2,
E.cFree3,
E.cFree4,
E.cFree5,
E.cFree6,
E.cFree7,
E.cFree8,
E.cFree9,
E.cFree10
FROM ICSInventoryLot A
LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
LEFT JOIN ICSMO C ON B.TransCode=C.MOCode AND C.Sequence=B.TransSequence
LEFT JOIN ICSMOPick D ON C.MODetailID=D.ID
LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
LEFT JOIN ICSContainer H ON H.ContainerID=G.ID WHERE 1=1 ";
sql += " and A.LotNo='{1}' and a.WorkPoint='{2}' ";
sql = string.Format(sql, TransTypeEnum.ICSMO, JsonData.Code, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sql, cmd);
string jsonICSMO = JsonConvert.SerializeObject(table);
var ICSMO = JsonConvert.DeserializeObject(jsonICSMO);//<List<WMSSourceDocumentModel>>
cmd.Transaction.Commit();
return ICSMO;
#endregion
case "销售退货":
string type = "退货";
bool veri = verification.HouseLotInfo(JsonData.Code, JsonData.WorkPoint, type);
if (veri == true)
{
sql = @"select
a.ID,
H.ContainerCODE,
H.ContainerName,
A.InvCode,
F.InvName,
F.InvStd,
a.Quantity,
F.InvUnit,
F.AmountUnit,
E.ProjectCode,
E.BatchCode,
E.Version,
E.Brand,
c.SDNCode as TransCode,--来源单据
c.Sequence as TransSequence,--来源行号
A.LotNo,
E.cFree1,
E.cFree2,
E.cFree3,
E.cFree4,
E.cFree5,
E.cFree6,
E.cFree7,
E.cFree8,
E.cFree9,
E.cFree10
FROM ICSInventoryLot A
LEFT JOIN ICSSDN C ON a.InvCode=C.InvCode AND C.WorkPoint=a.WorkPoint
LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
LEFT JOIN ICSContainer H ON H.ContainerID=G.ID
where C.type='2' and A.LotNo='{0}' and A.WorkPoint='{1}'";
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
}
break;
case "盘点":
sqlInfo = @"select
a.ID,
f.ContainerCODE,
f.ContainerName,
d.InvCode,
d.InvName,
d.InvStd,
a.Quantity,
d.InvUnit,
d.AmountUnit,
i.WarehouseCode,
i.WarehouseName,
q.LocationCode,
q.LocationName,
c.ProjectCode,
c.BatchCode,
c.Version,
c.Brand,
t.TransCode,--来源单据
t.TransSequence,--来源行号
c.cFree1,
c.cFree2,
c.cFree3,
c.cFree4,
c.cFree5,
c.cFree6,
c.cFree7,
c.cFree8,
c.cFree9,
c.cFree10,
b.LotNo
from ICSWareHouseLotInfo a
left join ICSInventoryLot b on b.LotNo=a.LotNo and a.WorkPoint=b.WorkPoint
left join ICSExtension c on c.ID=B.ExtensionID and c.WorkPoint=b.WorkPoint
left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
left join ICSContainerLot e on e.LotNo=a.LotNo and e.WorkPoint=a.WorkPoint
left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint
left join ICSWareHouseLotInfo h on h.LotNo=a.LotNo and h.WorkPoint=a.WorkPoint
left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
left join ICSWarehouse i on i.ID=q.WHID and i.WorkPoint=q.WorkPoint
left join ICSInventoryLotDetail t on t.LotNo=a.LotNo and t.WorkPoint=a.WorkPoint where a.LotNo='{0}' and a.WorkPoint='{1}' ";
sqlInfo = string.Format(sqlInfo, JsonData.Code, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sqlInfo, cmd);
string jsonInfo = JsonConvert.SerializeObject(table);
var modelInfo = JsonConvert.DeserializeObject(jsonInfo);//<List<WMSSourceDocumentModel>>
cmd.Transaction.Commit();
return modelInfo;
case "盘点单":
sqlInfo = @" SELECT
a.[ID],--表头唯一标识
a.CheckCode as TransCode ,--源头单据号
--c.ID as DetailID,--表体唯一标识
e.TransCode as TransSequence,--源头单据行号
f.InvCode as InvCode ,--料品编码
b.InvName as InvName,
b.InvStd as InvStd,
a.[Quantity] as Quantity,
b.InvUnit as InvUnit,
f.Amount as Amount,
b.AmountUnit as AmountUnit,
d.ProjectCode as ProjectCode,
d.BatchCode as BatchCode,
d.Version as Version,
d.Brand as Brand,
f.ActualQuantity as IssueQuantity,
d.cFree2,
d.cFree3,
d.cFree4,
d.cFree5,
d.cFree6,
d.cFree7,
d.cFree8,
d.cFree9,
d.cFree10,
c.LotNo
FROM ICSCheckDetail a --退货
left join ICSCheck f on f.CheckCode=a.CheckCode and a.WorkPoint=f.WorkPoint
LEFT JOIN ICSInventory B ON f.InvCode=B.InvCode and a.WorkPoint=b.WorkPoint--料品表
left join ICSInventoryLot c on c.lotno=a.lotno and a.WorkPoint=c.WorkPoint
LEFT JOIN ICSExtension d ON c.ExtensionID=d.ID and a.WorkPoint=c.WorkPoint--源头单据
left join ICSInventoryLotDetail e on c.LotNo=e.LotNo and c.WorkPoint=e.WorkPoint
where f.Status='2' and c.lotno='{0}' and a.WorkPoint='{1}' ";
sqlInfo = string.Format(sqlInfo, JsonData.Code, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sqlInfo, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var Noticec = JsonConvert.DeserializeObject(jsonInfo);
return Noticec;
case "采购到货单":
sql = @"select
a.ID,
H.ContainerCODE,
H.ContainerName,
A.InvCode,
F.InvName,
F.InvStd,
a.Quantity,
F.InvUnit,
F.AmountUnit,
E.ProjectCode,
E.BatchCode,
E.Version,
E.Brand,
c.POCode as TransCode,--来源单据
c.Sequence as TransSequence,--来源行号
A.LotNo,
E.cFree1,
E.cFree2,
E.cFree3,
E.cFree4,
E.cFree5,
E.cFree6,
E.cFree7,
E.cFree8,
E.cFree9,
E.cFree10
FROM ICSInventoryLot A
LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
LEFT JOIN ICSPurchaseOrder C ON b.TransCode=C.POCode AND C.Sequence=B.TransSequence
LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
LEFT JOIN ICSContainer H ON H.ContainerID=G.ID
where a.lotno='{0}' and a.WorkPoint='{1}'";
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sql, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var NoticecList = JsonConvert.DeserializeObject(jsonInfo);
return NoticecList;
case "采购订单":
bool SDN = verification.SNDetail(JsonData.Code, JsonData.WorkPoint);
bool oorder = verification.PurchaseOrder(JsonData.Code, JsonData.WorkPoint);
if (SDN == true && oorder == true)
{
double unm = verification.LotoTest(JsonData.Code, JsonData.WorkPoint);
if (unm == 0.0)
{
///条码数量
sqlInfo = @"select
a.ID,
H.ContainerCODE,
H.ContainerName,
A.InvCode,
F.InvName,
F.InvStd,
j.DNQuantity as Quantity,
F.InvUnit,
F.AmountUnit,
E.ProjectCode,
E.BatchCode,
E.Version,
E.Brand,
c.POCode as TransCode,--来源单据
c.Sequence as TransSequence,--来源行号
A.LotNo,
E.cFree1,
E.cFree2,
E.cFree3,
E.cFree4,
E.cFree5,
E.cFree6,
E.cFree7,
E.cFree8,
E.cFree9,
E.cFree10
FROM ICSInventoryLot A
LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
LEFT JOIN ICSPurchaseOrder C ON B.TransCode=C.POCode AND C.Sequence=B.TransSequence
LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
LEFT JOIN ICSContainer H ON H.ContainerID=G.ID
left join ICSASNDetail j on j.lotno=a.lotno
where c.Status='2' and a.lotno='{0}' and a.WorkPoint='{1}'";
sqlInfo = string.Format(sqlInfo, JsonData.Code, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sqlInfo, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var Purchase = JsonConvert.DeserializeObject(jsonInfo);
return Purchase;
}
else
{
//检验数量
sqlInfo = @"select
a.ID,
H.ContainerCODE,
H.ContainerName,
A.InvCode,
F.InvName,
F.InvStd,
'{2}' as Quantity,
F.InvUnit,
F.AmountUnit,
E.ProjectCode,
E.BatchCode,
E.Version,
E.Brand,
c.POCode as TransCode,--来源单据
c.Sequence as TransSequence,--来源行号
A.LotNo,
E.cFree1,
E.cFree2,
E.cFree3,
E.cFree4,
E.cFree5,
E.cFree6,
E.cFree7,
E.cFree8,
E.cFree9,
E.cFree10
FROM ICSInventoryLot A
LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
LEFT JOIN ICSPurchaseOrder C ON B.TransCode=C.POCode AND C.Sequence=B.TransSequence
LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
LEFT JOIN ICSContainer H ON H.ContainerID=G.ID
where c.Status='2' and a.lotno='{0}' and a.WorkPoint='{1}'";
sqlInfo = string.Format(sqlInfo, JsonData.Code, JsonData.WorkPoint, unm);
table = DBHelper.SQlReturnData(sqlInfo, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var Purchase = JsonConvert.DeserializeObject(jsonInfo);
return Purchase;
}
}
break;
case "一步式调拨单":
bool iSLocationCode = verification.iSLocationCode(JsonData.Code, JsonData.WorkPoint);
if (iSLocationCode == true)
{
sql = @"select
a.ID,
f.ContainerCODE,
f.ContainerName,
d.InvCode,
d.InvName,
d.InvStd,
a.Quantity,
d.InvUnit,
d.AmountUnit,
i.WarehouseCode,
i.WarehouseName,
q.LocationCode,
q.LocationName,
c.ProjectCode,
c.BatchCode,
c.Version,
c.Brand,
t.TransCode,--来源单据
t.TransSequence,--来源行号
c.cFree1,
c.cFree2,
c.cFree3,
c.cFree4,
c.cFree5,
c.cFree6,
c.cFree7,
c.cFree8,
c.cFree9,
c.cFree10,
b.LotNo
from ICSWareHouseLotInfo a
left join ICSInventoryLot b on b.LotNo=a.LotNo and a.WorkPoint=b.WorkPoint
left join ICSExtension c on c.ID=B.ExtensionID and c.WorkPoint=b.WorkPoint
left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint
left join ICSContainerLot e on e.LotNo=a.LotNo and e.WorkPoint=a.WorkPoint
left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint
left join ICSWareHouseLotInfo h on h.LotNo=a.LotNo and h.WorkPoint=a.WorkPoint
left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
left join ICSWarehouse i on i.ID=q.WHID and i.WorkPoint=q.WorkPoint
left join ICSInventoryLotDetail t on t.LotNo=a.LotNo and t.WorkPoint=a.WorkPoint
left join ICSTransfer l on l.TransferNO=t.TransCode and t.TransSequence=l.Sequence
where a.lotno='{0}' and a.WorkPoint='{1}'";
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sql, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var Transfer = JsonConvert.DeserializeObject(jsonInfo);
return Transfer;
}
return null;
case "二部调拨":
sql = @"select
a.ID,
f.ContainerCODE,
f.ContainerName,
d.InvCode,
d.InvName,
d.InvStd,
a.Quantity,
d.InvUnit,
d.AmountUnit,
i.WarehouseCode,
i.WarehouseName,
q.LocationCode,
q.LocationName,
b.ProjectCode,
b.BatchCode,
b.Version,
b.Brand,
t.TransCode,--来源单据
t.TransSequence,--来源行号
a.TransferQuantity as hasQuantity,
a.FromWarehouseCode as fromWHCode,
a.ToWarehouseCode as toWHCode,
b.ProjectCode ,
a.ToLocationCode as binCode,
c.LotNo,
b.cFree1,
b.cFree2,
b.cFree3,
b.cFree4,
b.cFree5,
b.cFree6,
b.cFree7,
b.cFree8,
b.cFree9,
b.cFree10,
c.LotNo
from ICSTransfer a
left join ICSExtension b on a.ExtensionID=b.ID and a.WorkPoint=b.WorkPoint
left join ICSContainerLot c on c.ID=b.ID and c.WorkPoint=b.WorkPoint--条码
left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint--料品表
left join ICSContainerLot e on e.LotNo=c.LotNo and e.WorkPoint=c.WorkPoint--包装关联表
left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint--包装
left join ICSWareHouseLotInfo h on h.LotNo=e.LotNo and h.WorkPoint=e.WorkPoint
left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
left join ICSWarehouse i on i.ID=q.WHID and i.WorkPoint=q.WorkPoint--仓库
left join ICSInventoryLotDetail t on t.LotNo=e.LotNo and t.WorkPoint=e.WorkPoint
where a.Type='2' and c.lotno='{0}' and a.WorkPoint'{1}'";
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sql, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var TOTransfer = JsonConvert.DeserializeObject(jsonInfo);
return TOTransfer;
case "其它入库":
bool BoolOtherIn = verification.HouseLotInfo(JsonData.Code, JsonData.WorkPoint, JsonData.TransType);
if (BoolOtherIn == true)
{
double num = verification.LotoTest(JsonData.Code, JsonData.WorkPoint);
if (num == 0.0)
{
///条码数量
sql = @"select
a.ID,
H.ContainerCODE,
H.ContainerName,
A.InvCode,
F.InvName,
F.InvStd,
a.Quantity,
F.InvUnit,
F.AmountUnit,
E.ProjectCode,
E.BatchCode,
E.Version,
E.Brand,
c.InCode as TransCode,--来源单据
c.Sequence as TransSequence,--来源行号
A.LotNo,
E.cFree1,
E.cFree2,
E.cFree3,
E.cFree4,
E.cFree5,
E.cFree6,
E.cFree7,
E.cFree8,
E.cFree9,
E.cFree10
FROM ICSInventoryLot A
LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
LEFT JOIN ICSOtherIn C ON b.TransCode=C.InCode AND C.Sequence=B.TransSequence
LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
LEFT JOIN ICSContainer H ON H.ContainerID=G.ID
where a.lotno='{0}' and a.WorkPoint='{1}'";
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sql, cmd);
}
else
{
///检验的数量
sql = @"select
a.ID,
H.ContainerCODE,
H.ContainerName,
A.InvCode,
F.InvName,
F.InvStd,
'{2}' as Quantity,
F.InvUnit,
F.AmountUnit,
E.ProjectCode,
E.BatchCode,
E.Version,
E.Brand,
c.InCode as TransCode,--来源单据
c.Sequence as TransSequence,--来源行号
A.LotNo,
E.cFree1,
E.cFree2,
E.cFree3,
E.cFree4,
E.cFree5,
E.cFree6,
E.cFree7,
E.cFree8,
E.cFree9,
E.cFree10
FROM ICSInventoryLot A
LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
LEFT JOIN ICSOtherIn C ON b.TransCode=C.InCode AND C.Sequence=B.TransSequence
LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
LEFT JOIN ICSContainer H ON H.ContainerID=G.ID
where a.lotno='{0}' and a.WorkPoint='{1}'";
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint, num);
table = DBHelper.SQlReturnData(sql, cmd);
}
}
jsonInfo = JsonConvert.SerializeObject(table);
var OtherIn = JsonConvert.DeserializeObject(jsonInfo);
return OtherIn;
case "拆分":
sql = @"select
a.ID,
H.ContainerCODE,
H.ContainerName,
A.InvCode,
F.InvName,
F.InvStd,
a.Quantity,
F.InvUnit,
F.AmountUnit,
c.ProjectCode,
c.BatchCode,
c.Version,
c.Brand,
d.TransCode as TransCode,--来源单据
d.TransSequence as TransSequence,--来源行号
A.LotNo,
c.cFree1,
c.cFree2,
c.cFree3,
c.cFree4,
c.cFree5,
c.cFree6,
c.cFree7,
c.cFree8,
c.cFree9,
c.cFree10
FROM ICSWareHouseLotInfo A
LEFT JOIN ICSInventoryLot B ON A.LotNo =B.LotNo
LEFT JOIN ICSExtension c ON c.ID=b.ExtensionID
left join ICSInventoryLotDetail d on b.LotNo=d.LotNo
LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
LEFT JOIN ICSContainer H ON H.ContainerID=G.ID
where a.lotno='{0}' and a.WorkPoint='{1}'";
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sql, cmd);
jsonInfo = JsonConvert.SerializeObject(table);
var lotinfo = JsonConvert.DeserializeObject(jsonInfo);
return lotinfo;
case "两部调入":
sqlInfo = @"select
a.ID,
H.ContainerCODE,
H.ContainerName,
A.InvCode,
F.InvName,
F.InvStd,
a.Quantity,
F.InvUnit,
F.AmountUnit,
E.ProjectCode,
E.BatchCode,
E.Version,
E.Brand,
c.InCode as TransCode,--来源单据
c.Sequence as TransSequence,--来源行号
A.LotNo,
E.cFree1,
E.cFree2,
E.cFree3,
E.cFree4,
E.cFree5,
E.cFree6,
E.cFree7,
E.cFree8,
E.cFree9,
E.cFree10
FROM ICSInventoryLot A
LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
LEFT JOIN ICSOtherIn C ON b.TransCode=C.InCode AND C.Sequence=B.TransSequence
left join ICSTransfer d on d.TransferNO =c.InCode and d.Sequence=c.Sequence
LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
LEFT JOIN ICSContainer H ON H.ContainerID=G.ID
where a.lotno ='{0}' and a.WorkPoint='{1}' and d.Type='2' ";
sqlInfo = string.Format(sqlInfo, JsonData.Code, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sqlInfo, cmd);
if (table.Rows.Count > 0)
{
jsonInfo = JsonConvert.SerializeObject(table);
var loyout = JsonConvert.DeserializeObject(jsonInfo);
return loyout;
}
else
{
throw new Exception("调拨单不存在!");
}
}
table = DBHelper.SQlReturnData(sql, cmd);
string json = JsonConvert.SerializeObject(table);
var model = JsonConvert.DeserializeObject(json);//<List<WMSSourceDocumentModel>>
cmd.Transaction.Commit();
return model;
}
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();
}
}
/// <summary>
/// 获取条码信息()
/// </summary>入库
/// <param name="JsonData"></param>
/// <returns></returns>
public object BarcodeWarehousing(BarCodeModel JsonData)
{
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
string type;
try
{
sql = @"select
a.ID,
f.ContainerCODE,
f.ContainerName,
d.InvCode,
d.InvName,
d.InvStd,
h.Quantity,
d.InvUnit,
d.AmountUnit,
i.WarehouseCode,
i.WarehouseName,
q.LocationCode,
q.LocationName,
b.ProjectCode,
b.BatchCode,
b.Version,
b.Brand,
t.TransCode,--来源单据
t.TransSequence,--来源行号
c.LotNo,
b.cFree1,
b.cFree2,
b.cFree3,
b.cFree4,
b.cFree5,
b.cFree6,
b.cFree7,
b.cFree8,
b.cFree9,
b.cFree10,
c.LotNo
from {0} a --委外出库
left join ICSExtension b on a.ExtensionID=b.ID and a.WorkPoint=b.WorkPoint
left join ICSInventoryLot c on c.ID=b.ID and c.WorkPoint=b.WorkPoint--条码
left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint--料品表
left join ICSContainerLot e on e.LotNo=c.LotNo and e.WorkPoint=c.WorkPoint--包装关联表
left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint--包装
left join ICSWareHouseLotInfo h on h.LotNo=e.LotNo and h.WorkPoint=e.WorkPoint
left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
left join ICSWarehouse i on i.WarehouseCode=q.WHID and i.WorkPoint=q.WorkPoint--仓库
left join ICSInventoryLotDetail t on t.LotNo=e.LotNo and t.WorkPoint=e.WorkPoint--关联表
where 1=1 ";
switch (JsonData.TransType)
{
case "送货单":
verification.HouseLotInfo(JsonData.Code, JsonData.WorkPoint, JsonData.TransCode);//库存条码验证
sql = @"select
a.ID,
f.ContainerCODE,
f.ContainerName,
d.InvCode,
d.InvName,
d.InvStd,
h.Quantity,
d.InvUnit,
d.AmountUnit,
i.WarehouseCode,
i.WarehouseName,
q.LocationCode,
q.LocationName,
c.ProjectCode,
c.BatchCode,
c.Version,
c.Brand,
t.TransCode,--来源单据
t.TransSequence,--来源行号
a.LotNo,
c.cFree1,
c.cFree2,
c.cFree3,
c.cFree4,
c.cFree5,
c.cFree6,
c.cFree7,
c.cFree8,
c.cFree9,
c.cFree10
from {0} a --送货单
left join ICSInventoryLot b on a.LotNo=b.LotNo and b.WorkPoint=a.WorkPoint--条码
left join ICSExtension c on b.ExtensionID=b.ID and b.WorkPoint=c.WorkPoint
left join ICSInventory d on b.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint--料品表
left join ICSContainerLot e on e.LotNo=a.LotNo and e.WorkPoint=c.WorkPoint--包装关联表
left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint--包装
left join ICSWareHouseLotInfo h on h.LotNo=e.LotNo and h.WorkPoint=e.WorkPoint
left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
left join ICSWarehouse i on i.WarehouseCode=q.WHID and i.WorkPoint=q.WorkPoint--仓库
left join ICSInventoryLotDetail t on t.LotNo=e.LotNo and t.WorkPoint=e.WorkPoint--关联表
where 1=1 and a.LotNo='{1}' and a.WorkPoint='{2}' and a.ASNCode='{3}'";
sql = string.Format(sql, TransTypeEnum.ICSASNDetail, JsonData.Code, JsonData.WorkPoint, JsonData.TransCode);
break;
case "委外送货单子表":
sql = @"select
a.ID,
f.ContainerCODE,
f.ContainerName,
d.InvCode,
d.InvName,
d.InvStd,
h.Quantity,
d.InvUnit,
d.AmountUnit,
i.WarehouseCode,
i.WarehouseName,
q.LocationCode,
q.LocationName,
c.ProjectCode,
c.BatchCode,
c.Version,
c.Brand,
t.TransCode,--来源单据
t.TransSequence,--来源行号
a.LotNo,
c.cFree1,
c.cFree2,
c.cFree3,
c.cFree4,
c.cFree5,
c.cFree6,
c.cFree7,
c.cFree8,
c.cFree9,
c.cFree10
from {0} a --送货单
left join ICSInventoryLot b on a.LotNo=b.LotNo and b.WorkPoint=a.WorkPoint--条码
left join ICSExtension c on b.ExtensionID=b.ID and b.WorkPoint=c.WorkPoint
left join ICSInventory d on b.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint--料品表
left join ICSContainerLot e on e.LotNo=a.LotNo and e.WorkPoint=c.WorkPoint--包装关联表
left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint--包装
left join ICSWareHouseLotInfo h on h.LotNo=e.LotNo and h.WorkPoint=e.WorkPoint
left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
left join ICSWarehouse i on i.WarehouseCode=q.WHID and i.WorkPoint=q.WorkPoint--仓库
left join ICSInventoryLotDetail t on t.LotNo=e.LotNo and t.WorkPoint=e.WorkPoint--关联表
where 1=1 and a.LotNo='{1}' and a.WorkPoint='{2}'and a.OASNCode='{3}'";
sql = string.Format(sql, TransTypeEnum.ICSOASNDetail, JsonData.Code, JsonData.WorkPoint, JsonData.TransCode);
break;
case "一步式调拨单":
sql = @"select
a.ID,
f.ContainerCODE,
f.ContainerName,
d.InvCode,
d.InvName,
d.InvStd,
h.Quantity,
d.InvUnit,
d.AmountUnit,
i.WarehouseCode,
i.WarehouseName,
q.LocationCode,
q.LocationName,
b.ProjectCode,
b.BatchCode,
b.Version,
b.Brand,
t.TransCode,--来源单据
t.TransSequence,--来源行号
c.LotNo,
b.cFree1,
b.cFree2,
b.cFree3,
b.cFree4,
b.cFree5,
b.cFree6,
b.cFree7,
b.cFree8,
b.cFree9,
b.cFree10,
c.LotNo
from {0} a --委外出库
left join ICSExtension b on a.ExtensionID=b.ID and a.WorkPoint=b.WorkPoint
left join ICSInventoryLot c on c.ID=b.ID and c.WorkPoint=b.WorkPoint--条码
left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint--料品表
left join ICSContainerLot e on e.LotNo=c.LotNo and e.WorkPoint=c.WorkPoint--包装关联表
left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint--包装
left join ICSWareHouseLotInfo h on h.LotNo=e.LotNo and h.WorkPoint=e.WorkPoint
left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
left join ICSWarehouse i on i.WarehouseCode=q.WHID and i.WorkPoint=q.WorkPoint--仓库
left join ICSInventoryLotDetail t on t.LotNo=e.LotNo and t.WorkPoint=e.WorkPoint--关联表
where 1=1 and type='1' and c.lotno='{1}' and a.TransferNO='{2}'";
sql = string.Format(sql, TransTypeEnum.ICSTransfer, JsonData.Code, JsonData.TransCode);
break;
case "二步式调拨单":
sql = @"select
a.ID,
f.ContainerCODE,
f.ContainerName,
d.InvCode,
d.InvName,
d.InvStd,
h.Quantity,
d.InvUnit,
d.AmountUnit,
i.WarehouseCode,
i.WarehouseName,
q.LocationCode,
q.LocationName,
b.ProjectCode,
b.BatchCode,
b.Version,
b.Brand,
t.TransCode,--来源单据
t.TransSequence,--来源行号
c.LotNo,
b.cFree1,
b.cFree2,
b.cFree3,
b.cFree4,
b.cFree5,
b.cFree6,
b.cFree7,
b.cFree8,
b.cFree9,
b.cFree10,
c.LotNo
from {0} a --委外出库
left join ICSExtension b on a.ExtensionID=b.ID and a.WorkPoint=b.WorkPoint
left join ICSInventoryLot c on c.ID=b.ID and c.WorkPoint=b.WorkPoint--条码
left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint--料品表
left join ICSContainerLot e on e.LotNo=c.LotNo and e.WorkPoint=c.WorkPoint--包装关联表
left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint--包装
left join ICSWareHouseLotInfo h on h.LotNo=e.LotNo and h.WorkPoint=e.WorkPoint
left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
left join ICSWarehouse i on i.WarehouseCode=q.WHID and i.WorkPoint=q.WorkPoint--仓库
left join ICSInventoryLotDetail t on t.LotNo=e.LotNo and t.WorkPoint=e.WorkPoint--关联表
where 1=1 and type='2' and c.lotno='{1}' and a.TransferNO='{2}' and a.WorkPoint='{3}'";
sql = string.Format(sql, TransTypeEnum.ICSTransfer, JsonData.Code, JsonData.TransCode, JsonData.WorkPoint);
break;
case "委外订单备料表":
type = "委外发料";
bool lotInfo = verification.HouseLotInfo(JsonData.Code, JsonData.WorkPoint, type);
if (lotInfo == true)
{
verification.Outsourcing(JsonData.Code, JsonData.WorkPoint, JsonData.TransCode);
sqlInfo = @"select a.ID,
b.InvCode,
o.InvName,
o.InvStd,
a.Quantity ,
o.InvUnit,
o.AmountUnit,
l.WarehouseCode,
l.WarehouseName,
j.LocationCode,
j.LocationName,
e.ProjectCode,
e.BatchCode,
e.Version,
e.Brand,
c.TransCode,--来源单据
c.TransSequence,--来源行号
a.LotNo,
e.cFree1,
e.cFree2,
e.cFree3,
e.cFree4,
e.cFree5,
e.cFree6,
e.cFree7,
e.cFree8,
e.cFree9,
e.cFree10 ,
b.Type
from ICSWareHouseLotInfo a
left join ICSInventoryLot b on a.LotNo=b.LotNo and a.InvCode=b.InvCode
left join ICSInventoryLotDetail c on c .LotNo=b.LotNo
left join ICSExtension e on e.id=b.ExtensionID
left join ICSContainerLot f on f.LotNo=b.LotNo
left join ICSContainer g on g.ContainerID=f.id
left join ICSLocation j on j.LocationCode=a.LocationCode
left join ICSWarehouse L ON L.ID=J.WHID
left join ICSInventory o on o.InvCode=b.InvCode
where a.LotNo='{0}' and a.WorkPoint='{1}' ";
sqlInfo = string.Format(sqlInfo, JsonData.Code, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sqlInfo, cmd);
}
string jsonInfoT = JsonConvert.SerializeObject(table);
var PickT = JsonConvert.DeserializeObject(jsonInfoT); //<List<WMSSourceDocumentModel>>
cmd.Transaction.Commit();
return PickT;
case "委外领料申请单":
sql = @"select
a.ID,
f.ContainerCODE,
f.ContainerName,
d.InvCode,
d.InvName,
d.InvStd,
h.Quantity,
d.InvUnit,
d.AmountUnit,
i.WarehouseCode,
i.WarehouseName,
q.LocationCode,
q.LocationName,
b.ProjectCode,
b.BatchCode,
b.Version,
b.Brand,
t.TransCode,--来源单据
t.TransSequence,--来源行号
c.LotNo,
b.cFree1,
b.cFree2,
b.cFree3,
b.cFree4,
b.cFree5,
b.cFree6,
b.cFree7,
b.cFree8,
b.cFree9,
b.cFree10,
c.LotNo
from {0} a --委外出库
left join ICSExtension b on a.ExtensionID=b.ID and a.WorkPoint=b.WorkPoint
left join ICSInventoryLot c on c.ID=b.ID and c.WorkPoint=b.WorkPoint--条码
left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint--料品表
left join ICSContainerLot e on e.LotNo=c.LotNo and e.WorkPoint=c.WorkPoint--包装关联表
left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint--包装
left join ICSWareHouseLotInfo h on h.LotNo=e.LotNo and h.WorkPoint=e.WorkPoint
left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
left join ICSWarehouse i on i.WarehouseCode=q.WHID and i.WorkPoint=q.WorkPoint--仓库
left join ICSInventoryLotDetail t on t.LotNo=e.LotNo and t.WorkPoint=e.WorkPoint--关联表
where c.LotNo='{1}' and a.WorkPoint='{2}' and a.OODetailID='{3}'";
sql = string.Format(sql, TransTypeEnum.ICSMOApply, JsonData.Code, JsonData.WorkPoint, JsonData.TransCode);
break;
case "销售发货":
type = "发货";
bool LotInfo = verification.HouseLotInfo(JsonData.Code, JsonData.WorkPoint, type);
if (LotInfo == true)
{
sql = @"select
f.ContainerCODE,
f.ContainerName,
d.InvCode,
d.InvName,
d.InvStd,
h.Quantity,
d.InvUnit,
d.AmountUnit,
i.WarehouseCode,
i.WarehouseName,
q.LocationCode,
q.LocationName,
b.ProjectCode,
b.BatchCode,
b.Version,
b.Brand,
t.TransCode,--来源单据
t.TransSequence,--来源行号
a.LotNo,
b.cFree1,
b.cFree2,
b.cFree3,
b.cFree4,
b.cFree5,
b.cFree6,
b.cFree7,
b.cFree8,
b.cFree9,
b.cFree10
from ICSInventoryLot a
left join ICSExtension b on a.ExtensionID=b.ID and a.WorkPoint=b.WorkPoint
left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint--料品表
left join ICSContainerLot e on e.LotNo=a.LotNo and e.WorkPoint=a.WorkPoint--包装关联表
left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint--包装
left join ICSWareHouseLotInfo h on h.LotNo=a.LotNo and h.WorkPoint=a.WorkPoint
left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
left join ICSWarehouse i on i.ID=q.WHID and i.WorkPoint=q.WorkPoint--仓库
left join ICSInventoryLotDetail t on t.LotNo=a.LotNo and t.WorkPoint=a.WorkPoint--关联表
where 1=1";
sql += " and a.LotNo='{0}' and a.WorkPoint='{1}'";
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sql, cmd);
if (table.Rows.Count <= 0)
{
throw new Exception("条码不存在!");
}
string jsonInfoInve = JsonConvert.SerializeObject(table);
var Inve = JsonConvert.DeserializeObject(jsonInfoInve); //<List<WMSSourceDocumentModel>>
cmd.Transaction.Commit();
return Inve;
}
break;
case "生产订单备料表":
type = "生产订单备料表";
bool nu = verification.HouseLotInfo(JsonData.Code, JsonData.WorkPoint, type);//库存条码验证
verification.HouseLotInvCode(JsonData.Code, JsonData.WorkPoint, JsonData.TransCode);
sqlInfo = @"select a.ID,
b.InvCode,
o.InvName,
o.InvStd,
a.Quantity ,
o.InvUnit,
o.AmountUnit,
l.WarehouseCode,
l.WarehouseName,
j.LocationCode,
j.LocationName,
e.ProjectCode,
e.BatchCode,
e.Version,
e.Brand,
c.TransCode,--来源单据
c.TransSequence,--来源行号
a.LotNo,
e.cFree1,
e.cFree2,
e.cFree3,
e.cFree4,
e.cFree5,
e.cFree6,
e.cFree7,
e.cFree8,
e.cFree9,
e.cFree10
from ICSWareHouseLotInfo a
left join ICSInventoryLot b on a.LotNo=b.LotNo and a.InvCode=b.InvCode
left join ICSInventoryLotDetail c on c .LotNo=b.LotNo
left join ICSExtension e on e.id=b.ExtensionID
left join ICSContainerLot f on f.LotNo=b.LotNo
left join ICSContainer g on g.ContainerID=f.id
left join ICSLocation j on j.LocationCode=a.LocationCode
left join ICSWarehouse L ON L.ID=J.WHID
left join ICSInventory o on o.InvCode=b.InvCode where a.LotNo='{0}' and a.WorkPoint='{1}' ";
sqlInfo = string.Format(sqlInfo, JsonData.Code, JsonData.WorkPoint, JsonData.TransCode);
table = DBHelper.SQlReturnData(sqlInfo, cmd);
string jsonInfo = JsonConvert.SerializeObject(table);
var Pick = JsonConvert.DeserializeObject(jsonInfo); //<List<WMSSourceDocumentModel>>
cmd.Transaction.Commit();
return Pick;
case "委外材料出库":
sql = @"select
a.ID,
f.ContainerCODE,
f.ContainerName,
d.InvCode,
d.InvName,
d.InvStd,
h.Quantity,
d.InvUnit,
d.AmountUnit,
i.WarehouseCode,
i.WarehouseName,
q.LocationCode,
q.LocationName,
b.ProjectCode,
b.BatchCode,
b.Version,
b.Brand,
t.TransCode,--来源单据
t.TransSequence,--来源行号
c.LotNo,
b.cFree1,
b.cFree2,
b.cFree3,
b.cFree4,
b.cFree5,
b.cFree6,
b.cFree7,
b.cFree8,
b.cFree9,
b.cFree10,
c.LotNo
from {0} a --委外出库
left join ICSExtension b on a.ExtensionID=b.ID and a.WorkPoint=b.WorkPoint
left join ICSInventoryLot c on c.ID=b.ID and c.WorkPoint=b.WorkPoint--条码
left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint--料品表
left join ICSContainerLot e on e.LotNo=c.LotNo and e.WorkPoint=c.WorkPoint--包装关联表
left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint--包装
left join ICSWareHouseLotInfo h on h.LotNo=e.LotNo and h.WorkPoint=e.WorkPoint
left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
left join ICSWarehouse i on i.WarehouseCode=q.WHID and i.WorkPoint=q.WorkPoint--仓库
left join ICSInventoryLotDetail t on t.LotNo=e.LotNo and t.WorkPoint=e.WorkPoint--关联表
where 1=1 and c.LotNo='{1}' and a.Status='2' and a.IssueCode='{2}'and a.WorkPoint='{3}'";
sql = string.Format(sql, TransTypeEnum.ICSOIssue, JsonData.Code, JsonData.TransCode, JsonData.WorkPoint);
break;
case "杂发单":
sql = @"select
a.ID,
f.ContainerCODE,
f.ContainerName,
d.InvCode,
d.InvName,
d.InvStd,
h.Quantity,
d.InvUnit,
d.AmountUnit,
i.WarehouseCode,
i.WarehouseName,
q.LocationCode,
q.LocationName,
b.ProjectCode,
b.BatchCode,
b.Version,
b.Brand,
t.TransCode,--来源单据
t.TransSequence,--来源行号
c.LotNo,
b.cFree1,
b.cFree2,
b.cFree3,
b.cFree4,
b.cFree5,
b.cFree6,
b.cFree7,
b.cFree8,
b.cFree9,
b.cFree10,
c.LotNo
from {0} a --委外出库
left join ICSExtension b on a.ExtensionID=b.ID and a.WorkPoint=b.WorkPoint
left join ICSInventoryLot c on c.ID=b.ID and c.WorkPoint=b.WorkPoint--条码
left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint--料品表
left join ICSContainerLot e on e.LotNo=c.LotNo and e.WorkPoint=c.WorkPoint--包装关联表
left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint--包装
left join ICSWareHouseLotInfo h on h.LotNo=e.LotNo and h.WorkPoint=e.WorkPoint
left join ICSLocation q on q.LocationCode=h.LocationCode and q.WorkPoint=h.WorkPoint
left join ICSWarehouse i on i.WarehouseCode=q.WHID and i.WorkPoint=q.WorkPoint--仓库
left join ICSInventoryLotDetail t on t.LotNo=e.LotNo and t.WorkPoint=e.WorkPoint--关联表
where 1=1 and c.LotNo='{1}' and a.Status='2' and a.OutCode='{2}' and a.WorkPoint='{3}'";
sql = string.Format(sql, TransTypeEnum.ICSOtherOut, JsonData.Code, JsonData.TransCode, JsonData.WorkPoint);
break;
case "采购退货单":
sql = @"select a.ID,
b.InvCode,
o.InvName,
o.InvStd,
a.Quantity ,
o.InvUnit,
o.AmountUnit,
l.WarehouseCode,
l.WarehouseName,
j.LocationCode,
j.LocationName,
e.ProjectCode,
e.BatchCode,
e.Version,
e.Brand,
c.TransCode,--来源单据
c.TransSequence,--来源行号
a.LotNo,
e.cFree1,
e.cFree2,
e.cFree3,
e.cFree4,
e.cFree5,
e.cFree6,
e.cFree7,
e.cFree8,
e.cFree9,
e.cFree10
from ICSWareHouseLotInfo a
left join ICSInventoryLot b on a.LotNo=b.LotNo and a.InvCode=b.InvCode
left join ICSInventoryLotDetail c on c .LotNo=b.LotNo
left join ICSExtension e on e.id=b.ExtensionID
left join ICSContainerLot f on f.LotNo=b.LotNo
left join ICSContainer g on g.ContainerID=f.id
left join ICSLocation j on j.LocationCode=a.LocationCode
left join ICSWarehouse L ON L.ID=J.WHID
left join ICSInventory o on o.InvCode=b.InvCode where a.LotNo='{0}' and a.WorkPoint='{1}'";
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sql, cmd);
string jsonNotice = JsonConvert.SerializeObject(table);
var PickNotice = JsonConvert.DeserializeObject(jsonNotice); //<List<WMSSourceDocumentModel>>
cmd.Transaction.Commit();
return PickNotice;
case "两部调出":
sql = @"select
a.ID,
H.ContainerCODE,
H.ContainerName,
A.InvCode,
F.InvName,
F.InvStd,
a.Quantity,
F.InvUnit,
F.AmountUnit,
E.ProjectCode,
E.BatchCode,
E.Version,
E.Brand,
c.OutCode as TransCode,--来源单据
c.Sequence as TransSequence,--来源行号
A.LotNo,
E.cFree1,
E.cFree2,
E.cFree3,
E.cFree4,
E.cFree5,
E.cFree6,
E.cFree7,
E.cFree8,
E.cFree9,
E.cFree10
FROM ICSInventoryLot A
LEFT JOIN ICSInventoryLotDetail B ON A.LotNo =B.LotNo
LEFT JOIN ICSOtherOut C ON b.TransCode=C.OutCode AND C.Sequence=B.TransSequence
left join ICSTransfer d on d.TransferNO =c.OutCode and d.Sequence=c.Sequence
LEFT JOIN ICSExtension E ON E.ID=A.ExtensionID
LEFT JOIN ICSInventory F ON A.InvCode=F.InvCode
LEFT JOIN ICSContainerLot G ON A.LotNo =G.LotNo
LEFT JOIN ICSContainer H ON H.ContainerID=G.ID
where a.lotno ='{0}' and a.WorkPoint='{1}' and d.Type='2'";
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sql, cmd);
if (table.Rows.Count > 0)
{
string jsonCode = JsonConvert.SerializeObject(table);
var modelCode = JsonConvert.DeserializeObject(jsonCode);
return modelCode;
}
else
{
throw new Exception("调拨单不存在!");
}
case "委外退货单":
sql = @"select a.ID,
b.InvCode,
o.InvName,
o.InvStd,
a.Quantity ,
o.InvUnit,
o.AmountUnit,
l.WarehouseCode,
l.WarehouseName,
j.LocationCode,
j.LocationName,
e.ProjectCode,
e.BatchCode,
e.Version,
e.Brand,
c.TransCode,--来源单据
c.TransSequence,--来源行号
a.LotNo,
e.cFree1,
e.cFree2,
e.cFree3,
e.cFree4,
e.cFree5,
e.cFree6,
e.cFree7,
e.cFree8,
e.cFree9,
e.cFree10
from ICSWareHouseLotInfo a
left join ICSInventoryLot b on a.LotNo=b.LotNo and a.InvCode=b.InvCode
left join ICSInventoryLotDetail c on c .LotNo=b.LotNo
left join ICSExtension e on e.id=b.ExtensionID
left join ICSContainerLot f on f.LotNo=b.LotNo
left join ICSContainer g on g.ContainerID=f.id
left join ICSLocation j on j.LocationCode=a.LocationCode
left join ICSWarehouse L ON L.ID=J.WHID
left join ICSInventory o on o.InvCode=b.InvCode where a.LotNo='{0}' and a.WorkPoint='{1}'";
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sql, cmd);
string jsonOrder = JsonConvert.SerializeObject(table);
var PickOrder = JsonConvert.DeserializeObject(jsonOrder); //<List<WMSSourceDocumentModel>>
cmd.Transaction.Commit();
return PickOrder;
case "其它出库":
bool Zero = verification.isStockZero(JsonData.Code, JsonData.WorkPoint);
if (Zero == true)
{
bool ZeroCode = verification.iSNullLocationCode(JsonData.Code, JsonData.WorkPoint);
if (ZeroCode == true)
{
sql = @"select
f.ContainerCODE,
f.ContainerName,
d.InvCode,
d.InvName,
d.InvStd,
a.Quantity,
d.InvUnit,
d.AmountUnit,
i.WarehouseCode,
i.WarehouseName,
q.LocationCode,
q.LocationName,
b.ProjectCode,
b.BatchCode,
b.Version,
b.Brand,
t.TransCode,--来源单据
t.TransSequence,--来源行号
a.LotNo,
b.cFree1,
b.cFree2,
b.cFree3,
b.cFree4,
b.cFree5,
b.cFree6,
b.cFree7,
b.cFree8,
b.cFree9,
b.cFree10
from ICSWareHouseLotInfo a
left join ICSInventoryLot h on a.LotNo=h.LotNo
left join ICSExtension b on h.ExtensionID=b.ID and a.WorkPoint=b.WorkPoint
left join ICSInventory d on a.InvCode=d.InvCode and a.WorkPoint=d.WorkPoint--料品表
left join ICSContainerLot e on e.LotNo=a.LotNo and e.WorkPoint=a.WorkPoint--包装关联表
left join ICSContainer f on f.ContainerID= e.ID and f.WorkPoint=e.WorkPoint--包装
left join ICSLocation q on q.LocationCode=a.LocationCode and q.WorkPoint=a.WorkPoint
left join ICSWarehouse i on i.ID=q.WHID and i.WorkPoint=q.WorkPoint--仓库
left join ICSInventoryLotDetail t on t.LotNo=a.LotNo and t.WorkPoint=a.WorkPoint--关联表
where a.lotno='{0}' and a.WorkPoint='{1}'";
sql = string.Format(sql, JsonData.Code, JsonData.WorkPoint);
table = DBHelper.SQlReturnData(sql, cmd);
string jsonCode = JsonConvert.SerializeObject(table);
var modelCode = JsonConvert.DeserializeObject(jsonCode);
return modelCode;
}
}
break;
}
sql = string.Format(sql, JsonData.Code);
table = DBHelper.SQlReturnData(sql, cmd);
string json = JsonConvert.SerializeObject(table);
var model = JsonConvert.DeserializeObject(json); //<List<WMSSourceDocumentModel>>
cmd.Transaction.Commit();
return model;
}
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();
}
}
#endregion
#region 上架
/// <summary>
/// 上架查询
/// </summary>
/// <returns></returns>
public object LOTStockUpGet(WMSTBarCodeModel JsonData)
{
//WMSTBarCodeModelInfo model = new WMSTBarCodeModelInfo();
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
try
{
sql = @"SELECT
b.ID,
b.InvCode,
b.Quantity,
b.AmountRate,
a.TransCode,
a.TransSequence,
a.LotNo,
d.WarehouseCode,
d.WarehouseName,
e.LocationCode,
e.LocationName,
b.Type,
a.MUSER,
a.MTIME
from ICSInventoryLotDetail a
left join ICSInventoryLot b on a.LotNo=b.LotNo
left join ICSWareHouseLotInfo c on a.LotNo=c.LotNo
left join ICSWarehouse d on d.WarehouseCode=c.WarehouseCode
left join ICSLocation e on e.LocationCode=c.LocationCode where 1=1";
if (!string.IsNullOrEmpty(JsonData.TransCode))
{
sql += " and a.TransCode='{0}'";
sql = string.Format(sql, JsonData.TransCode);
}
if (!string.IsNullOrEmpty(JsonData.User))
{
sql += " and MUSER='{1}'";
sql = string.Format(sql, JsonData.User);
}
if (JsonData.MTime.ToString() != "0001/1/1 0:00:00")
{
sql += " and MTIME='{2}'";
sql = string.Format(sql, JsonData.MTime);
}
table = DBHelper.SQlReturnData(sql, cmd);
string json = JsonConvert.SerializeObject(table);
var model = JsonConvert.DeserializeObject(json);
//model = JsonConvert.DeserializeObject<WMSTBarCodeModelInfo>(json);//<List<WMSSourceDocumentModel>>
cmd.Transaction.Commit();
return model;
}
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();
}
}
/// <summary>
/// 上架增加
/// </summary>BusinessCode,TransType 两个类型
/// <param name="JsonData"></param>
/// <returns></returns>
public List<LOTStockUpCreateIModel> LOTStockCreate(List<LOTStockUpCreateIModel> JsonData)
{
List<LOTStockUpCreateIModel> model = new List<LOTStockUpCreateIModel>();
List<PurchaseReceiveDoc> mddelInfo = new List<PurchaseReceiveDoc>();
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
int num = 0;
int numInfo = 0;
DataTable tableInfo = null;
string sqlERP = string.Empty;//ERP的表头
string sqlERPDetil = string.Empty;//ERP的表体
string jsonERP = string.Empty;///erpjson
string IstrErp = string.Empty;
string iresult = string.Empty;//接口调用
try
{
foreach (var item in JsonData)
{
foreach (var itemInfo in item.detail)
{
int i = 1;
switch (item.TransType)
{
case "委外退料单":
// string neg = verification.HouseLotoOut(itemInfo.LotNo, item.WorkPoint);
//if (neg == null)
//{
string numNegDetaill = @"select * from ICSOApplyNegDetail where OApplyNegCode='{0}'and Sequence='{1}' and WorkPoint='{2}' ";
numNegDetaill = string.Format(numNegDetaill, itemInfo.TransCode, itemInfo.TransSequence, item.WorkPoint);
DataTable numNegDetailwl = DBHelper.SQlReturnData(numNegDetaill, cmd);
foreach (DataRow itemDetail in numNegDetailwl.Rows)
{
double Quantity = Convert.ToDouble(itemInfo.Quantity);///输入数量
double IssueNegQuantity = Convert.ToDouble(itemDetail["IssueNegQuantity"]);//已退数量
double NegQuantity = Quantity + IssueNegQuantity;//总数量(输入数量+已退数量)
double QuantityPla = Convert.ToDouble(itemDetail["Quantity"]);//计划数量
if (QuantityPla >= NegQuantity)
{
string NegDetailSql = @"update ICSOApplyNegDetail set IssueNegQuantity=ISNULL(IssueNegQuantity,0)+'{3}'
, MUSER='{4}' ,MUSERName=(select F_RealName from Sys_SRM_User where F_Account='{4}' and F_Location='{2}'), MTIME=GETDATE()
where OApplyNegCode='{0}' and Sequence='{1}' and WorkPoint='{2}' ";
NegDetailSql = string.Format(NegDetailSql, itemInfo.TransCode, itemInfo.TransSequence, item.WorkPoint, itemInfo.Quantity, item.User);
if (!DBHelper.ExecuteNonQuery(NegDetailSql, cmd))
{
throw new Exception("委外退料单更新失败!");
}
///添加库存
string HouseLotSql = @" insert into ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
(select newid(),'{0}' ,a.WHCode,isnull((f.LocationCode),0) ,b.InvCode ,'{1}','{2}','0','{3}' ,g.F_RealName ,'{4}' ,'{5}' ,' '
from ICSOApplyNeg a --委外退料申请单
inner join ICSOApplyNegDetail b on a.OApplyNegCode=b.OApplyNegCode and a.WorkPoint=b.WorkPoint --委外退料申请单详情
left join ICSInventoryLotDetail c on b.OApplyNegCode=c.TransCode and c.TransSequence=b.Sequence AND b.WorkPoint=c.WorkPoint--条码关联
left join ICSInventoryLot d on c.LOTNO=d.LotNO and d.WorkPoint=c.WorkPoint --条码
left join ICSWarehouse e on e.WarehouseCode=a.WHCode and e.WorkPoint=a.WorkPoint--仓库
left join ICSLocation f on f.WHID=e.ID and f.WorkPoint=e.WorkPoint--库位
left join Sys_SRM_User g on g.F_Account='{3}' and F_Location='{5}' --用户
where a.OApplyNegCode='{6}' and a. WorkPoint='{5}')";
HouseLotSql = string.Format(HouseLotSql, itemInfo.LotNo, itemInfo.Quantity, DateTime.Now, item.User, DateTime.Now, item.WorkPoint, itemInfo.TransCode);
if (!DBHelper.ExecuteNonQuery(HouseLotSql, cmd))
{
throw new Exception("委外退料单库存更新失败!");
}
///添加日志
string sqlLogInfo = @"INSERT INTO [dbo].[ICSWareHouseLotInfoLog]
([ID]
,[TransCode]
,[TransSequence]
,[LotNo]
,[InvCode]
,[FromWarehouseCode]
,[FromLocationCode]
,[ToWarehouseCode]
,[ToLocationCode]
,[Quantity]
,[Memo]
,[Lock]
,[TransType]
,[BusinessCode]
,[ERPID]
,[ERPDetailID]
,[ERPCode]
,[ERPSequence]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
(select newid(),'{0}','{1}','{2}',b.InvCode ,' ', ' ',a.WHCode,d.LocationCode,'{3}',' ','0','2','8',' ',' ',' ',' ','{4}',e.F_RealName,'{5}','{6}',' '
from ICSOApplyNeg a--主表
inner join ICSOApplyNegDetail b on a.OApplyNegCode=b.OApplyNegCode --明细
left join ICSWarehouse c on c.WarehouseCode=a.WHCode and c.WorkPoint=a.WorkPoint--仓库
left join ICSLocation d on d.WHID=c.ID and d.WorkPoint=c.WorkPoint--库位
left join Sys_SRM_User e on e.F_Account='{4}' and e.F_Location='{6}'
where a.OApplyNegCode='{0}' and a. WorkPoint='{6}')";
sqlLogInfo = string.Format(sqlLogInfo, itemInfo.TransCode, itemInfo.TransSequence, itemInfo.LotNo, itemInfo.Quantity, item.User, DateTime.Now, item.WorkPoint);
cmd.CommandText = sqlLogInfo;
int numInfoLot = cmd.ExecuteNonQuery();
if (numInfoLot > 0)
{
cmd.Transaction.Commit();
}
else
{
cmd.Transaction.Rollback();
}
}
else
{
throw new Exception("已退数量不能大于计划数量!");
}
}
#region ERP
string sqlERPOOPick = @" select DepCode,FromWarehouseCode,OOCode,a.MUSER , (getdate())as Mtime from ICSWareHouseLotInfoLog a
left join ICSOutsourcingOrder b on b.OOCode=a.TransCode and a.TransSequence=b.Sequence
left join ICSOOPick c on b.OODetailID=c.OODetailID
where OOCode='{0}' and b.WorkPoint='{1}'
group by DepCode,FromWarehouseCode,OOCode,a.MUSER ";
sqlERPOOPick = string.Format(sqlERPOOPick, itemInfo.TransCode, item.WorkPoint);
table = DBHelper.SQlReturnData(sqlERPOOPick, cmd);
string sqlERPPickList = @"select a.TransCode, a.TransSequence,a.InvCode,sum(a.Quantity) as Quantity , isnull((b.Amount),0)as Amount,c.PickID from ICSWareHouseLotInfoLog a
left JOIN ICSOutsourcingOrder B on b.OOCode=a.TransCode and a.TransSequence=b.Sequence
left join ICSOOPick C on C.OODetailID=B.OODetailID and c.Sequence=a.TransSequence
where lotno='{0}' and a.Memo<>'1'
group by a.TransCode, a.TransSequence,a.InvCode,b.Amount ,c.PickID ";
sqlERPPickList = string.Format(sqlERPPickList, itemInfo.LotNo);
DataTable ERPOOPick = DBHelper.SQlReturnData(sqlERPPickList, cmd);
string jsonPickList = null;
List<IssueDoc> docPickmodel = new List<IssueDoc>();
foreach (DataRow dts in table.Rows)
{
IssueDoc doc = new IssueDoc();
doc.DepCode = dts["DepCode"].ToString();
doc.WHCode = dts["FromWarehouseCode"].ToString();
doc.SourceType = "委外退料";
doc.SourceCode = dts["OOCode"].ToString();
doc.User = dts["MUSER"].ToString();
doc.User = dts["Mtime"].ToString();
// doc.MTime = DateTime.Now;
List<IssueDocList> list = new List<IssueDocList>();
foreach (DataRow dtList in ERPOOPick.Rows)
{
IssueDocList docc = new IssueDocList();
docc.Sequence = dtList["TransSequence"].ToString();
docc.InvCode = dtList["InvCode"].ToString();
docc.Quantity = dtList["Quantity"].ToString();
docc.Amount = dtList["Amount"].ToString();
docc.SourceDetailID = dtList["PickID"].ToString();
list.Add(docc);
}
doc.details = list;
docPickmodel.Add(doc);
//jsonList = JsonConvert.SerializeObject(doc);
}
string IstrPick = JsonConvert.SerializeObject(docPickmodel);
string iresultPick = HttpPost("委外退料", ERPUrl.OutsourcingIssueDoNegativeURL, IstrPick);
Result OtherOutResultpick = new Result();
OtherOutResultpick = JsonConvert.DeserializeObject<Result>(iresultPick);
ERPJsonRetun m = new ERPJsonRetun();
if (OtherOutResultpick.Success == true)
{
string nn = OtherOutResultpick.Data.ToString();//LOTStockModel
m = JsonConvert.DeserializeObject<ERPJsonRetun>(nn);
string ERPupdate = @"update ICSWareHouseLotInfoLog set ERPID='{0}',ERPDetailID='{1}',ERPCode='{2}',ERPSequence='{3}',Memo='1'
where TransCode='{4}' and TransSequence ='{5}'";
ERPupdate = string.Format(ERPupdate, m.ID, m.DetailID, m.RCVNEGCode, m.Sequence, itemInfo.TransCode, itemInfo.TransSequence);
cmd.CommandText = ERPupdate;
num = cmd.ExecuteNonQuery();
if (num > 0)
{
cmd.Transaction.Commit();
}
else
{
cmd.Transaction.Rollback();
}
}
else
{
cmd.Transaction.Rollback();
throw new Exception(OtherOutResultpick.Message);
}
#endregion
//}
return null;
case "采购入库":
//添加采购入库
sql = @"update ICSPurchaseOrder set RCVQuantity= RCVQuantity+(select Quantity from ICSInventoryLot where lontno='{0}' ,MTIME='{1}' where RCVCod='{2}' and InvCode=(select InvCode from ICSInventoryLot where lontno='{0}' ),and WorkPoint='{3}')";
sql = string.Format(sql, itemInfo.LotNo, DateTime.Now, itemInfo.TransCode, item.WorkPoint);
cmd.CommandText = sql;
int Purchase = cmd.ExecuteNonQuery();
cmd.Transaction.Commit();
//记录日志
if (Purchase > 0)
{
string sqlLog = @"INSERT INTO [dbo].[ICSWareHouseLotInfoLog]
([ID]
,[TransCode]
,[TransSequence]
,[LotNo]
,[InvCode]
,[FromWarehouseCode]
,[FromLocationCode]
,[ToWarehouseCode]
,[ToLocationCode]
,[Quantity]
,[Memo]
,[Lock]
,[TransType]
,[BusinessCode]
,[ERPID]
,[ERPDetailID]
,[ERPCode]
,[ERPSequence]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
VALUES
(newid()
,'{4}'
,''
,'{0}'
,(SELECT InvCode FROM ICSMO WHERE MOCode='{5}')
,(SELECT WarehouseCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
,(SELECT LocationCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
,''
,''
,(SELECT Quantity FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
,''
,''
,'1'
,''
,''
,''
,''
,''
,'{1}'
,'{1}'
,'{2}'
,'{3}'
,'')";
sqlLog = string.Format(sqlLog, itemInfo.LotNo, item.User, DateTime.Now, item.WorkPoint, itemInfo.TransCode);
DBHelper.CmdExecuteNonQuery(sqlLog, cmd, "成功");
cmd.Transaction.Commit();
}
//生产erp订单
return null;
case "销售退货":
string Date = DateTime.Now.ToString("yy");
string Pre = "CHK" + i + Date;//库存盘点单号
#region 添加到库存表/日志表
///验证条码是否存在或者是否上架
sqlInfo = @"select * from ICSInventoryLot where LotNo='{0}'";
sqlInfo = string.Format(sqlInfo, itemInfo.LotNo);
cmd.CommandText = sqlInfo;
table = DBHelper.SQlReturnData(sqlInfo, cmd);//返回条数
if (table.Rows.Count <= 0)
{
throw new Exception("条码不存在!");
}
string sqlll = @"select * from ICSWareHouseLotInfo where LotNo='{0}'";
sqlll = string.Format(sqlInfo, itemInfo.LotNo);
cmd.CommandText = sqlll;
DataTable dataTex = DBHelper.SQlReturnData(sqlll, cmd);//返回条数
if (dataTex.Rows.Count <= 0)
{
throw new Exception("条码已上架!");
}
sqlInfo = @"select * from ICSSDN where SDNCode='{0}' and Status='3' and Type='2'";
sqlInfo = string.Format(sqlInfo, itemInfo.TransCode);
cmd.CommandText = sqlInfo;
tableInfo = DBHelper.SQlReturnData(sqlInfo, cmd);//返回条数
if (tableInfo.Rows.Count > 0)
{
throw new Exception("销售订单已经关闭!或退货不存在");
}
else
{
sql = @"update ICSSDN set SDNQuantity= SDNQuantity + Quantity ,MTIME='{1}' where SDNCode ='{2}' and InvCode=(select InvCode from ICSInventoryLot where lotno='{0}' ) and WorkPoint='{3}'";
sql = string.Format(sql, itemInfo.LotNo, DateTime.Now, itemInfo.TransCode, item.WorkPoint, itemInfo.Quantity);
cmd.CommandText = sql;
int ApplyNeg = cmd.ExecuteNonQuery();
// cmd.Transaction.Commit();
string sqlLotInfo = @" INSERT INTO[ICSWareHouseLotInfo]
([ID]
,[LotNo]
,[WarehouseCode]
,[LocationCode]
,[InvCode]
,[Quantity]
,[InDate]
,[LockQuantity]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
VALUES
(newid()
, '{0}'
, (select WarehouseCode from ICSWarehouse a left join ICSLocation b on a.ID = b.WHID WHERE LocationCode = '{1}')
,'{1}'
,(SELECT InvCode FROM ICSInventoryLot WHERE LotNo = '{0}')
,'{6}'
,'{5}'
,0
,'{2}'
,'{2}'
,'{3}'
,'{4}'
,'')";
sqlLotInfo = string.Format(sqlLotInfo, itemInfo.LotNo, itemInfo.LocationCode, item.User, DateTime.Now, item.WorkPoint, item.MTime, itemInfo.Quantity);
DBHelper.CmdExecuteNonQuery(sqlLotInfo, cmd, "成功");
//cmd.Transaction.Commit();
string sqlLog = @"INSERT INTO [dbo].[ICSWareHouseLotInfoLog]
([ID]
,[TransCode]
,[TransSequence]
,[LotNo]
,[InvCode]
,[FromWarehouseCode]
,[FromLocationCode]
,[ToWarehouseCode]
,[ToLocationCode]
,[Quantity]
,[Memo]
,[Lock]
,[TransType]
,[BusinessCode]
,[ERPID]
,[ERPDetailID]
,[ERPCode]
,[ERPSequence]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
VALUES
(newid()
,'{4}'
,' '
,'{0}'
,(SELECT InvCode FROM ICSInventoryLot WHERE LotNo='{0}')
,(SELECT WarehouseCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
,(SELECT LocationCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
,''
,''
,(SELECT Quantity FROM ICSInventoryLot WHERE LotNo='{0}')
,''
,''
,'21'
,''
,''
,''
,''
,''
,'{1}'
,'{1}'
,'{2}'
,'{3}'
,'')";
sqlLog = string.Format(sqlLog, itemInfo.LotNo, item.User, DateTime.Now, item.WorkPoint, itemInfo.TransCode);
DBHelper.CmdExecuteNonQuery(sqlLog, cmd, "成功");
cmd.Transaction.Commit();
#region ERP接口
string ERPSnd = @"select A.CusCode,A.SOCode ,B.MUSER,MAX(B.MTIME) AS MTIME,b.TransSequence,b.TransCode,B.InvCode,b.FromWarehouseCode FROM ICSSDN a
inner join ICSWareHouseLotInfoLog b on a.SDNCode=b.TransCode and b.TransSequence=a.Sequence
where a.Type='2' and b.TransCode='{0}' and b.WorkPoint='{1}'
group by A.CusCode,A.SOCode ,B.MUSER,b.TransSequence,b.TransCode,B.InvCode,b.FromWarehouseCode";
ERPSnd = string.Format(ERPSnd, itemInfo.TransCode, item.WorkPoint);
table = DBHelper.SQlReturnData(ERPSnd, cmd);
string ERPSndList = @"select a.TransSequence,b.InvCode,sum(a.Quantity) as Quantity , isnull((b.Amount),0)as Amount ,b.SDNDetailID from ICSWareHouseLotInfoLog a
inner JOIN ICSSDN B ON b.SDNCode=a.TransCode and a.TransSequence=b.Sequence
where a.LotNo='{0}' and a.Memo<>'1' and b.WorkPoint='{1}' and b.Type='2'
group by a.TransSequence,b.InvCode, Amount ,b.SDNDetailID";
ERPSndList = string.Format(ERPSndList, itemInfo.LotNo, item.WorkPoint);
DataTable SDNNEG = DBHelper.SQlReturnData(ERPSndList, cmd);
List<ERPICSSDN> ERPSDNNEG = new List<ERPICSSDN>();
foreach (DataRow itemNotice in table.Rows)
{
ERPICSSDN noticeModel = new ERPICSSDN();
noticeModel.CusCode = itemNotice["CusCode"].ToString();
noticeModel.WHCode = itemNotice["FromWarehouseCode"].ToString();
noticeModel.SDNRTCode = itemNotice["SOCode"].ToString();
noticeModel.User = itemNotice["MUSER"].ToString();
noticeModel.MTime = itemNotice["MTIME"].ToString();
List<ERPICSSDNList> noticeModelList = new List<ERPICSSDNList>();
foreach (DataRow ERPNoticeList in SDNNEG.Rows)
{
ERPICSSDNList listInfo = new ERPICSSDNList();
listInfo.Sequence = ERPNoticeList["TransSequence"].ToString();
listInfo.InvCode = ERPNoticeList["InvCode"].ToString();
listInfo.Quantity = ERPNoticeList["Quantity"].ToString();
listInfo.Amount = ERPNoticeList["Amount"].ToString();
listInfo.SDNDetailID = ERPNoticeList["SDNDetailID"].ToString();
noticeModelList.Add(listInfo);
}
noticeModel.details = noticeModelList;
ERPSDNNEG.Add(noticeModel);
string ERPICSSDN = JsonConvert.SerializeObject(ERPSDNNEG);
string Emoiresultsdn = HttpPost("红字销售出库单", ERPUrl.SalesDeliveryNoticeURL, ERPICSSDN);
Result OtherOutI = new Result();
OtherOutI = JsonConvert.DeserializeObject<Result>(Emoiresultsdn);
if (OtherOutI.Message != "200")
{
throw new Exception(OtherOutI.Message);
}
else
{
//OtherOutResult.Data;
}
}
#endregion
}
#endregion
return null;
case "生产退库":
#region 添加到库存表/日志表
sqlInfo = @"select * from ICSLocation where LocationCode='{0}'";
sqlInfo = string.Format(sqlInfo, itemInfo.LocationCode);
cmd.CommandText = sqlInfo;
table = DBHelper.SQlReturnData(sqlInfo, cmd);
if (table.Rows.Count <= 0)
{
throw new Exception("库位不存在!");
}
///验证条码是否存在或者是否上架
sqlInfo = @"select * from ICSInventoryLot where LotNo='{0}'";
sqlInfo = string.Format(sqlInfo, itemInfo.LotNo);
cmd.CommandText = sqlInfo;
table = DBHelper.SQlReturnData(sqlInfo, cmd);//返回条数
if (table.Rows.Count <= 0)
{
throw new Exception("条码不存在!");
}
sqlInfo = @"select * from ICSWareHouseLotInfo where LotNo='{0}'";
sqlInfo = string.Format(sqlInfo, itemInfo.LotNo);
cmd.CommandText = sqlInfo;
tableInfo = DBHelper.SQlReturnData(sqlInfo, cmd);//返回条数
if (tableInfo.Rows.Count > 0)
{
throw new Exception("条码已经上架!");
}
else
{
sql = @"update ICSMOApplyNegDetail set IssueNegQuantity= IssueNegQuantity + (select Quantity from ICSInventoryLot where lotno='{0}' ) ,MTIME='{1}' where ApplyNegCode ='{2}' and InvCode=(select InvCode from ICSInventoryLot where lotno='{0}' ) and WorkPoint='{3}'";
sql = string.Format(sql, itemInfo.LotNo, DateTime.Now, itemInfo.TransCode, item.WorkPoint);
cmd.CommandText = sql;
int ApplyNeg = cmd.ExecuteNonQuery();
sql = @" INSERT INTO [ICSWareHouseLotInfo]
([ID]
,[LotNo]
,[WarehouseCode]
,[LocationCode]
,[InvCode]
,[Quantity]
,[InDate]
,[LockQuantity]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
VALUES
(newid()
,'{0}'
,(select WarehouseCode from ICSWarehouse a left join ICSLocation b on a.ID =b.WHID WHERE LocationCode='{1}')
,'{1}'
,(SELECT InvCode FROM ICSInventoryLot WHERE LotNo='{0}')
,(SELECT Quantity FROM ICSInventoryLot WHERE LotNo='{0}')
,'{5}'
,0
,'{2}'
,'{2}'
,'{3}'
,'{4}'
,'')";
sql = string.Format(sql, itemInfo.LotNo, itemInfo.LocationCode, item.User, item.MTime, item.WorkPoint, DateTime.Now);
cmd.CommandText = sql;
numInfo = cmd.ExecuteNonQuery();
//cmd.Transaction.Commit();
if (numInfo > 0)
{
string sqlLog = @"INSERT INTO [dbo].[ICSWareHouseLotInfoLog]
([ID]
,[TransCode]
,[TransSequence]
,[LotNo]
,[InvCode]
,[FromWarehouseCode]
,[FromLocationCode]
,[ToWarehouseCode]
,[ToLocationCode]
,[Quantity]
,[Memo]
,[Lock]
,[TransType]
,[BusinessCode]
,[ERPID]
,[ERPDetailID]
,[ERPCode]
,[ERPSequence]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
VALUES
(newid()
,'{4}'
,' '
,'{0}'
,(SELECT InvCode FROM ICSInventoryLot WHERE LotNo='{0}')
,(SELECT WarehouseCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
,(SELECT LocationCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
,''
,''
,(SELECT Quantity FROM ICSInventoryLot WHERE LotNo='{0}')
,''
,''
,'21'
,''
,''
,''
,''
,''
,'{1}'
,'{1}'
,'{2}'
,'{3}'
,'')";
sqlLog = string.Format(sqlLog, itemInfo.LotNo, item.User, DateTime.Now, item.WorkPoint, itemInfo.TransCode);
DBHelper.CmdExecuteNonQuery(sqlLog, cmd, "成功");
cmd.Transaction.Commit();
}
}
#endregion
return null;
case "采购订单":
///验证订单是否关闭
string sqlTYPE = @"SELECT * FROM ICSPurchaseOrder WHERE POCode='{0}' AND WorkPoint='{1}' AND Status='3'";
sqlTYPE = string.Format(sqlTYPE, itemInfo.TransCode, item.WorkPoint);
DataTable dtType = DBHelper.SQlReturnData(sqlTYPE, cmd);
if (dtType.Rows.Count <= 0)
{
#region 添加到库存表/日志表
sqlInfo = @"select * from ICSLocation where LocationCode='{0}'";
sqlInfo = string.Format(sqlInfo, itemInfo.LocationCode);
cmd.CommandText = sqlInfo;
table = DBHelper.SQlReturnData(sqlInfo, cmd);
if (table.Rows.Count <= 0)
{
throw new Exception("库位不存在!");
}
///验证条码是否存在或者是否上架
sqlInfo = @"select * from ICSInventoryLot where LotNo='{0}'";
sqlInfo = string.Format(sqlInfo, itemInfo.LotNo);
cmd.CommandText = sqlInfo;
table = DBHelper.SQlReturnData(sqlInfo, cmd);//返回条数
if (table.Rows.Count <= 0)
{
throw new Exception("条码不存在!");
}
sqlInfo = @"select * from ICSWareHouseLotInfo where LotNo='{0}'";
sqlInfo = string.Format(sqlInfo, itemInfo.LotNo);
cmd.CommandText = sqlInfo;
tableInfo = DBHelper.SQlReturnData(sqlInfo, cmd);//返回条数
if (tableInfo.Rows.Count > 0)
{
throw new Exception("条码已经上架!");
}
else
{
sql = @"update ICSPurchaseOrder set InQuantity= InQuantity + (select Quantity from ICSInventoryLot where lotno='{0}' ) ,MTIME='{1}' where POCode ='{2}' and InvCode=(select InvCode from ICSInventoryLot where lotno='{0}' ) and WorkPoint='{3}'";
sql = string.Format(sql, itemInfo.LotNo, DateTime.Now, itemInfo.TransCode, item.WorkPoint);
cmd.CommandText = sql;
int PurchaseList = cmd.ExecuteNonQuery();
if (PurchaseList > 0)
{
sql = @" INSERT INTO [ICSWareHouseLotInfo]
([ID]
,[LotNo]
,[WarehouseCode]
,[LocationCode]
,[InvCode]
,[Quantity]
,[InDate]
,[LockQuantity]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
(select newid(),'{0}' ,e.WarehouseCode,isnull((f.LocationCode),0) ,a.InvCode ,'{1}','{2}','0','{3}' ,g.F_RealName ,'{4}' ,'{5}' ,' '
from ICSPurchaseOrder a
left join ICSLocation f on LocationCode='{8}'
left join ICSWarehouse e on e.id=(select WHID from ICSLocation where LocationCode='{8}')
left join Sys_SRM_User g on g.F_Account='{3}' and F_Location='{5}' --用户
where a.POCode='{6}' and a. WorkPoint='{5}' and a.Sequence='{7}')";
sql = string.Format(sql, itemInfo.LotNo, itemInfo.Quantity, DateTime.Now, item.User, DateTime.Now, item.WorkPoint, itemInfo.TransCode, itemInfo.TransSequence, itemInfo.LocationCode);
cmd.CommandText = sql;
numInfo = cmd.ExecuteNonQuery();
if (numInfo > 0)
{
string sqlLog = @"INSERT INTO [dbo].[ICSWareHouseLotInfoLog]
([ID]
,[TransCode]
,[TransSequence]
,[LotNo]
,[InvCode]
,[FromWarehouseCode]
,[FromLocationCode]
,[ToWarehouseCode]
,[ToLocationCode]
,[Quantity]
,[Memo]
,[Lock]
,[TransType]
,[BusinessCode]
,[ERPID]
,[ERPDetailID]
,[ERPCode]
,[ERPSequence]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
(select newid(),'{0}','{1}','{2}',a.InvCode ,' ', ' ',c.WarehouseCode,'{7}','{3}',' ','0','2','8',' ',' ',' ',' ','{4}',e.F_RealName,'{5}','{6}',' '
from ICSPurchaseOrder a--主表
left join ICSWarehouse c on c.id=(select WHID from ICSLocation where LocationCode='{7}')
left join Sys_SRM_User e on e.F_Account='{4}' and e.F_Location='{6}'
where a.POCode='{0}' and a. WorkPoint='{6}')";
sqlLog = string.Format(sqlLog, itemInfo.TransCode, itemInfo.TransSequence, itemInfo.LotNo, itemInfo.Quantity, item.User, DateTime.Now, item.WorkPoint, itemInfo.LocationCode);
cmd.CommandText = sqlLog;
numInfo = cmd.ExecuteNonQuery();
}
}
else
{
throw new Exception("数量不足!");
}
}
#endregion
#region ERP
sqlERP = @" select VenCode,POCode, ToWarehouseCode,a.MUSER,b.Sequence ,(getdate())as Mtime from ICSWareHouseLotInfoLog a
left join ICSPurchaseOrder b on a.TransCode=b.POCode and b.Sequence =a.transSequence
where b.POCode='{0}' and b.WorkPoint='{1}' and a.Memo <> '1'
group by VenCode,POCode, ToWarehouseCode,a.MUSER,b.Sequence ";
sqlERP = string.Format(sqlERP, itemInfo.TransCode, item.WorkPoint);
table = DBHelper.SQlReturnData(sqlERP, cmd);
sqlERPDetil = @"select b.Sequence,a.InvCode,sum (a.Quantity) as Quantity,isnull((b.Amount),0) as Amount,b.UnitPrice,b.Currency,b.PODetailID from ICSWareHouseLotInfoLog a
inner join ICSPurchaseOrder b on a.TransCode=b.POCode and b.Sequence =a.transSequence
where b.POCode='{0}' and b.WorkPoint='{1}' and a.Memo <> '1'
group by b.Sequence,a.InvCode,b.Amount,b.UnitPrice,b.Currency,b.PODetailID";
sqlERPDetil = string.Format(sqlERPDetil, itemInfo.TransCode, item.WorkPoint);
DataTable ERPtable = DBHelper.SQlReturnData(sqlERPDetil, cmd);
List<ERPPurchaseOrder> docmodel = new List<ERPPurchaseOrder>();
foreach (DataRow dtIn in table.Rows)
{
ERPPurchaseOrder doc = new ERPPurchaseOrder();
doc.VenCode = dtIn["VenCode"].ToString();
doc.POCode = dtIn["POCode"].ToString();
doc.User = dtIn["MUSER"].ToString();
doc.MTime = dtIn["Mtime"].ToString();
doc.WHCode = dtIn["ToWarehouseCode"].ToString();
doc.DNCode = "";
List<ERPPurchaseOrderList> list = new List<ERPPurchaseOrderList>();
foreach (DataRow dtList in ERPtable.Rows)
{
ERPPurchaseOrderList docc = new ERPPurchaseOrderList();
docc.Sequence = dtList["Sequence"].ToString();
docc.InvCode = dtList["InvCode"].ToString();
docc.Quantity = dtList["Quantity"].ToString();
docc.Amount = dtList["Amount"].ToString();
docc.Currency = dtList["Currency"].ToString();
docc.UnitPrice = dtList["UnitPrice"].ToString();
docc.PODetailID = dtList["PODetailID"].ToString();
docc.DNDetailID = "";
list.Add(docc);
}
doc.details = list;
docmodel.Add(doc);
}
IstrErp = JsonConvert.SerializeObject(docmodel);
iresult = HttpPost("采购订单", ERPUrl.PurchaseOrderURL, IstrErp);
Result OtherOutResult = new Result();
OtherOutResult = JsonConvert.DeserializeObject<Result>(iresult);
List<ERPJsonRetun> mm = new List<ERPJsonRetun>();//json返回
if (OtherOutResult.Success == true)
{
string nn = OtherOutResult.Data.ToString();//LOTStockModel
mm = JsonConvert.DeserializeObject<List<ERPJsonRetun>>(nn);
foreach (var items in mm)
{
string ERPupdate = @"update ICSWareHouseLotInfoLog set ERPID='{0}',ERPDetailID='{1}',ERPCode='{2}',ERPSequence='{3}',memo='1'
where TransCode='{4}' and TransSequence ='{5}'";
ERPupdate = string.Format(ERPupdate, items.ID, items.DetailID, items.RCVTCode, items.Sequence, itemInfo.TransCode, itemInfo.TransSequence);
cmd.CommandText = ERPupdate;
numInfo = cmd.ExecuteNonQuery();
}
if (numInfo > 0)
{
cmd.Transaction.Commit();
}
else
{
cmd.Transaction.Rollback();
}
}
else
{
cmd.Transaction.Rollback();
throw new Exception(OtherOutResult.Message);
}
#endregion
}
else
{
throw new Exception("采购订单已经关闭!");
}
return null;
case "成品入库":
#region 添加到库存表/日志表
sqlInfo = @"select * from ICSLocation where LocationCode='{0}'";
sqlInfo = string.Format(sqlInfo, itemInfo.LocationCode);
cmd.CommandText = sqlInfo;
table = DBHelper.SQlReturnData(sqlInfo, cmd);
if (table.Rows.Count <= 0)
{
throw new Exception("库位不存在!");
}
///验证条码是否存在或者是否上架
sqlInfo = @"select * from ICSInventoryLot where LotNo='{0}'";
sqlInfo = string.Format(sqlInfo, itemInfo.LotNo);
cmd.CommandText = sqlInfo;
table = DBHelper.SQlReturnData(sqlInfo, cmd);//返回条数
if (table.Rows.Count <= 0)
{
throw new Exception("条码不存在!");
}
sqlInfo = @"select * from ICSWareHouseLotInfo where LotNo='{0}'";
sqlInfo = string.Format(sqlInfo, itemInfo.LotNo);
cmd.CommandText = sqlInfo;
tableInfo = DBHelper.SQlReturnData(sqlInfo, cmd);//返回条数
if (tableInfo.Rows.Count > 0)
{
throw new Exception("条码已经上架!");
}
else
{
sql = @"update ICSMO set RCVQuantity= RCVQuantity + (select Quantity from ICSInventoryLot where lotno='{0}' ) ,MTIME='{1}' where MOCode ='{2}' and InvCode=(select InvCode from ICSInventoryLot where lotno='{0}' ) and WorkPoint='{3}'";
sql = string.Format(sql, itemInfo.LotNo, DateTime.Now, itemInfo.TransCode, item.WorkPoint);
cmd.CommandText = sql;
int ApplyNeg = cmd.ExecuteNonQuery();
sql = @" INSERT INTO [ICSWareHouseLotInfo]
([ID]
,[LotNo]
,[WarehouseCode]
,[LocationCode]
,[InvCode]
,[Quantity]
,[InDate]
,[LockQuantity]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
VALUES
(newid()
,'{0}'
,(select WarehouseCode from ICSWarehouse a left join ICSLocation b on a.ID =b.WHID WHERE LocationCode='{1}')
,'{1}'
,(SELECT InvCode FROM ICSInventoryLot WHERE LotNo='{0}')
,(SELECT Quantity FROM ICSInventoryLot WHERE LotNo='{0}')
,'{5}'
,0
,'{2}'
,'{2}'
,'{3}'
,'{4}'
,'')";
sql = string.Format(sql, itemInfo.LotNo, itemInfo.LocationCode, item.User, item.MTime, item.WorkPoint, DateTime.Now);
cmd.CommandText = sql;
numInfo = cmd.ExecuteNonQuery();
//cmd.Transaction.Commit();
if (numInfo > 0)
{
string sqlLog = @"INSERT INTO [dbo].[ICSWareHouseLotInfoLog]
([ID]
,[TransCode]
,[TransSequence]
,[LotNo]
,[InvCode]
,[FromWarehouseCode]
,[FromLocationCode]
,[ToWarehouseCode]
,[ToLocationCode]
,[Quantity]
,[Memo]
,[Lock]
,[TransType]
,[BusinessCode]
,[ERPID]
,[ERPDetailID]
,[ERPCode]
,[ERPSequence]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
VALUES
(newid()
,'{4}'
,' '
,'{0}'
,(SELECT InvCode FROM ICSInventoryLot WHERE LotNo='{0}')
,(SELECT WarehouseCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
,(SELECT LocationCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
,''
,''
,(SELECT Quantity FROM ICSInventoryLot WHERE LotNo='{0}')
,''
,''
,'21'
,''
,''
,''
,''
,''
,'{1}'
,'{1}'
,'{2}'
,'{3}'
,'')";
sqlLog = string.Format(sqlLog, itemInfo.LotNo, item.User, DateTime.Now, item.WorkPoint, itemInfo.TransCode);
DBHelper.CmdExecuteNonQuery(sqlLog, cmd, "成功");
cmd.Transaction.Commit();
}
}
#endregion
return null;
case "委外订单"://(委外入库)
verification.HouseLotoOut(itemInfo.LotNo, item.WorkPoint);
string numNegDetail = @"select isnull((InQuantity),0) as InQuantity , Quantity from ICSOutsourcingOrder where OOCode='{0}'and Sequence='{1}' and WorkPoint='{2}' and Status <> '3' ";
numNegDetail = string.Format(numNegDetail, itemInfo.TransCode, itemInfo.TransSequence, item.WorkPoint);
DataTable dataDetail = DBHelper.SQlReturnData(numNegDetail, cmd);
if (dataDetail.Rows.Count < 0)
{
throw new Exception("订单已关闭!");
}
else
{
foreach (DataRow itemDetail in dataDetail.Rows)
{
double Quantity = Convert.ToDouble(itemInfo.Quantity);///输入数量
double IssueNegQuantity = Convert.ToDouble(itemDetail["InQuantity"]);//已退数量
double NegQuantity = Quantity + IssueNegQuantity;//总数量(输入数量+已退数量)
double QuantityPla = Convert.ToDouble(itemDetail["Quantity"]);//计划数量
if (QuantityPla >= NegQuantity)
{
string NegDetailSql = @"update ICSOutsourcingOrder set Quantity=(select sum(Quantity) from ICSOutsourcingOrder where OOCode='{0}' and Sequence='{1}' and WorkPoint='{2}') +'{3}'
, MUSER='{4}' ,MUSERName=(select F_RealName from Sys_SRM_User where F_Account='{4}' and F_Location='{2}'), MTIME='{5}'
where OOCode='{0}' and Sequence='{1}' and WorkPoint='{2}' ";
NegDetailSql = string.Format(NegDetailSql, itemInfo.TransCode, itemInfo.TransSequence, item.WorkPoint, itemInfo.Quantity, item.User, DateTime.Now);
cmd.CommandText = NegDetailSql;
numInfo = cmd.ExecuteNonQuery();
///添加库存
string HouseLotSql = @"
insert into ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
(select newid(),'{0}' ,e.WarehouseCode,isnull((d.LocationCode),0) as LocationCode ,a.InvCode ,'{1}','{2}','0','{3}' ,g.F_RealName ,'{2}' ,'{4}' ,' '
from ICSOutsourcingOrder a --委外退料申请单
left join ICSLocation d on d.LocationCode='{6}'
left join ICSWarehouse e on e.id=(select WHID from ICSLocation where LocationCode='{6}')
left join Sys_SRM_User g on g.F_Account='{3}' and F_Location='{4}' --用户
where a.OOCode='{5}' and a. WorkPoint='{4}')";
HouseLotSql = string.Format(HouseLotSql, itemInfo.LotNo, itemInfo.Quantity, DateTime.Now, item.User, item.WorkPoint, itemInfo.TransCode, itemInfo.LocationCode);
cmd.CommandText = HouseLotSql;
num = cmd.ExecuteNonQuery();
///添加日志
string sqlLogInfo = @"INSERT INTO [dbo].[ICSWareHouseLotInfoLog]
([ID]
,[TransCode]
,[TransSequence]
,[LotNo]
,[InvCode]
,[FromWarehouseCode]
,[FromLocationCode]
,[ToWarehouseCode]
,[ToLocationCode]
,[Quantity]
,[Memo]
,[Lock]
,[TransType]
,[BusinessCode]
,[ERPID]
,[ERPDetailID]
,[ERPCode]
,[ERPSequence]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
(select newid(),'{0}','{1}','{2}',a.InvCode ,' ', ' ',b.WarehouseCode,'{7}','{3}',' ','0','2','8',' ',' ',' ',' ','{4}',e.F_RealName,'{5}','{6}',' '
from ICSOutsourcingOrder a--主表
left join ICSWarehouse b on b.id=(select WHID from ICSLocation where LocationCode='{7}')
left join Sys_SRM_User e on e.F_Account='{4}' and e.F_Location='{6}'
where a.OOCode='{0}' and a. WorkPoint='{6}')";
sqlLogInfo = string.Format(sqlLogInfo, itemInfo.TransCode, itemInfo.TransSequence, itemInfo.LotNo, itemInfo.Quantity, item.User, DateTime.Now, item.WorkPoint, itemInfo.LocationCode);
cmd.CommandText = sqlLogInfo;
int numInfoLot = cmd.ExecuteNonQuery();
#region ERP
sqlERP = @" select VenCode,OOCode, ToWarehouseCode,a.MUSER,b.Sequence ,(getdate())as Mtime from ICSWareHouseLotInfoLog a
left join ICSOutsourcingOrder b on a.TransCode=b.OOCode and b.Sequence =a.transSequence
where b.OOCode='{0}' and b.WorkPoint='{1}' and a.Memo <> '1'
group by VenCode,OOCode, ToWarehouseCode,a.MUSER,b.Sequence ";
sqlERP = string.Format(sqlERP, itemInfo.TransCode, item.WorkPoint);
table = DBHelper.SQlReturnData(sqlERP, cmd);
sqlERPDetil = @"select b.Sequence,a.InvCode,sum (a.Quantity) as Quantity,isnull((b.Amount),0) as Amount,isnull((b.UnitPrice),0) as UnitPrice,b.Currency,b.OODetailID from ICSWareHouseLotInfoLog a
inner join ICSOutsourcingOrder b on a.TransCode=b.OOCode and b.Sequence =a.transSequence
where b.OOCode='{0}' and b.WorkPoint='{1}' and a.Memo <> '1'
group by b.Sequence,a.InvCode,b.Amount,b.UnitPrice,b.Currency,b.OODetailID";
sqlERPDetil = string.Format(sqlERPDetil, itemInfo.TransCode, item.WorkPoint);
DataTable ERPtable = DBHelper.SQlReturnData(sqlERPDetil, cmd);
List<ERPPurchaseOrder> docmodel = new List<ERPPurchaseOrder>();
foreach (DataRow dtIn in table.Rows)
{
ERPPurchaseOrder doc = new ERPPurchaseOrder();
doc.VenCode = dtIn["VenCode"].ToString();
//doc.OOCode = dtIn["OOCode"].ToString();
doc.User = dtIn["MUSER"].ToString();
doc.MTime = dtIn["Mtime"].ToString();
//doc.MTime = DateTime.Now;
doc.WHCode = dtIn["ToWarehouseCode"].ToString();
doc.ODNCode = "";
List<ERPPurchaseOrderList> list = new List<ERPPurchaseOrderList>();
foreach (DataRow dtList in ERPtable.Rows)
{
ERPPurchaseOrderList docc = new ERPPurchaseOrderList();
docc.Sequence = dtList["Sequence"].ToString();
docc.InvCode = dtList["InvCode"].ToString();
docc.Quantity = dtList["Quantity"].ToString();
docc.Amount = dtList["Amount"].ToString();
docc.Currency = dtList["Currency"].ToString();
docc.UnitPrice = dtList["UnitPrice"].ToString();
//docc.OODetailID = dtList["OODetailID"].ToString();
docc.DNDetailID = "";
list.Add(docc);
}
doc.details = list;
docmodel.Add(doc);
}
IstrErp = JsonConvert.SerializeObject(docmodel);
log.Info("委外入库ERPJSON" + IstrErp);
iresult = HttpPost("委外入库", ERPUrl.OutsourcingReceiveDocURL, IstrErp);
Result OtherOutResult = new Result();
OtherOutResult = JsonConvert.DeserializeObject<Result>(iresult);
List<ERPJsonRetun> mm = new List<ERPJsonRetun>();//json返回
if (OtherOutResult.Success == true)
{
string nn = OtherOutResult.Data.ToString();//LOTStockModel
mm = JsonConvert.DeserializeObject<List<ERPJsonRetun>>(nn);
foreach (var items in mm)
{
string ERPupdate = @"update ICSWareHouseLotInfoLog set ERPID='{0}',ERPDetailID='{1}',ERPCode='{2}',ERPSequence='{3}',memo='1'
where TransCode='{4}' and TransSequence ='{5}'";
ERPupdate = string.Format(ERPupdate, items.ID, items.DetailID, items.RCVTCode, items.Sequence, itemInfo.TransCode, itemInfo.TransSequence);
cmd.CommandText = ERPupdate;
numInfo = cmd.ExecuteNonQuery();
}
if (numInfo > 0)
{
cmd.Transaction.Commit();
}
else
{
cmd.Transaction.Rollback();
}
}
else
{
cmd.Transaction.Rollback();
throw new Exception(OtherOutResult.Message);
}
#endregion
if (numInfoLot > 0)
{
cmd.Transaction.Commit();
}
else
{
cmd.Transaction.Rollback();
}
}
}
}
return null;
case "其它入库":
string SOtherInDetail = @"select * from ICSOtherIn where InCode='{0}'and Sequence='{1}' and WorkPoint='{2}' ";
SOtherInDetail = string.Format(SOtherInDetail, itemInfo.TransCode, itemInfo.TransSequence, item.WorkPoint);
DataTable dataDetailIn = DBHelper.SQlReturnData(SOtherInDetail, cmd);
if (dataDetailIn.Rows.Count > 0)
{
string sqlnn = @"select * from ICSOtherIn where InCode='{0}'and Sequence='{1}' and WorkPoint='{2}' and Status='3' ";
sqlnn = string.Format(sqlnn, itemInfo.TransCode, itemInfo.TransSequence, item.WorkPoint);
DataTable dataDetailll = DBHelper.SQlReturnData(sqlnn, cmd);
if (dataDetailll.Rows.Count > 0)
{
throw new Exception("订单已关闭!");
}
else
{
foreach (DataRow itemDetail in dataDetailIn.Rows)
{
double Quantity = Convert.ToDouble(itemInfo.Quantity);///输入数量
double IssueNegQuantity = Convert.ToDouble(itemDetail["InQuantity"]);//已退数量
double NegQuantity = Quantity + IssueNegQuantity;//总数量(输入数量+已退数量)
double QuantityPla = Convert.ToDouble(itemDetail["Quantity"]);//计划数量
if (QuantityPla >= NegQuantity)
{
string NegDetailSql = @"update ICSOtherIn set InQuantity=(select sum(InQuantity) from ICSOtherIn where InCode='{0}' and Sequence='{1}' and WorkPoint='{2}') +'{3}'
, MUSER='{4}' ,MUSERName=(select F_RealName from Sys_SRM_User where F_Account='{4}' and F_Location='{2}'), MTIME='{5}'
where InCode='{0}' and Sequence='{1}' and WorkPoint='{2}' ";
NegDetailSql = string.Format(NegDetailSql, itemInfo.TransCode, itemInfo.TransSequence, item.WorkPoint, itemInfo.Quantity, item.User, DateTime.Now);
cmd.CommandText = NegDetailSql;
numInfo = cmd.ExecuteNonQuery();
///添加库存
string HouseLotSql = @"
insert into ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
(select newid(),'{0}' ,a.WHCode,isnull((f.LocationCode),0) ,a.InvCode ,'{1}','{2}','0','{3}' ,g.F_RealName ,'{4}' ,'{5}' ,' '
from ICSOtherIn a --委外退料申请单
left join ICSInventoryLotDetail c on a.InCode=c.TransCode and c.TransSequence=a.Sequence --条码关联
left join ICSInventoryLot d on c.LOTNO=d.LotNO and d.WorkPoint=c.WorkPoint --条码
left join ICSLocation f on f.WHID=(select id from ICSWarehouse where WarehouseCode='{6}')
left join Sys_SRM_User g on g.F_Account='{3}' and F_Location='{5}' --用户
where a.InCode='{6}' and a. WorkPoint='{5}')";
HouseLotSql = string.Format(HouseLotSql, itemInfo.LotNo, itemInfo.Quantity, DateTime.Now, item.User, DateTime.Now, item.WorkPoint, itemInfo.TransCode, itemInfo.LocationCode);
cmd.CommandText = HouseLotSql;
num = cmd.ExecuteNonQuery();
///添加日志
string sqlLogInfo = @"INSERT INTO [dbo].[ICSWareHouseLotInfoLog]
([ID]
,[TransCode]
,[TransSequence]
,[LotNo]
,[InvCode]
,[FromWarehouseCode]
,[FromLocationCode]
,[ToWarehouseCode]
,[ToLocationCode]
,[Quantity]
,[Memo]
,[Lock]
,[TransType]
,[BusinessCode]
,[ERPID]
,[ERPDetailID]
,[ERPCode]
,[ERPSequence]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
(select newid(),'{0}','{1}','{2}',a.InvCode ,' ', ' ',a.WHCode,d.LocationCode,'{3}',' ','0','2','12',' ',' ',' ',' ','{4}',e.F_RealName,'{5}','{6}',' '
from ICSOtherIn a--主表
left join ICSWarehouse c on c.WarehouseCode=a.WHCode and c.WorkPoint=a.WorkPoint--仓库
left join ICSLocation d on d.WHID=(select id from ICSWarehouse where WarehouseCode='{7}')--库位
left join Sys_SRM_User e on e.F_Account='{4}' and e.F_Location='{6}'
where a.InCode='{0}' and a. WorkPoint='{6}' AND A.Sequence='{1}' )";
sqlLogInfo = string.Format(sqlLogInfo, itemInfo.TransCode, itemInfo.TransSequence, itemInfo.LotNo, itemInfo.Quantity, item.User, DateTime.Now, item.WorkPoint, itemInfo.LocationCode);
cmd.CommandText = sqlLogInfo;
int numInfoLot = cmd.ExecuteNonQuery();
if (numInfoLot > 0)
{
cmd.Transaction.Commit();
}
else
{
cmd.Transaction.Rollback();
}
#region ERP
#endregion
}
else
{
throw new Exception("已入数量超过计划数量!");
}
}
}
}
else
{
throw new Exception("查无数据!");
}
return null;
}
}
}
return model;
}
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();
}
}
/// <summary>
/// 上架删除
/// </summary>BusinessCode,TransType 两个类型
/// <param name="JsonData"></param>
/// <returns></returns>
public List<LOTStockUpDeleteIModel> LOTStockDelete(LOTStockUpDeleteIModel JsonData)
{
List<LOTStockUpDeleteIModel> model = new List<LOTStockUpDeleteIModel>();
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
try
{
sql = @"";
table = DBHelper.SQlReturnData(sql, cmd);
string json = JsonConvert.SerializeObject(table);
model = JsonConvert.DeserializeObject<List<LOTStockUpDeleteIModel>>(json);//<List<WMSSourceDocumentModel>>
cmd.Transaction.Commit();
return model;
}
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();
}
}
#endregion
#region 下架
/// <summary>
/// 下架增加
/// </summary>BusinessCode,TransType 两个类型
/// <param name="JsonData"></param>
/// <returns></returns>
public int LOTStockDownCreate(List<LOTStockModel> JsonData)
{
List<LOTStockUpCreateIModel> model = new List<LOTStockUpCreateIModel>();
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
int num;
string sqlERP = string.Empty;//ERP的表头
string sqlERPDetil = string.Empty;//ERP的表体
string jsonERP = string.Empty;///erpjson
string IstrErp = string.Empty;
string iresult = string.Empty;//接口调用
try
{
foreach (var item in JsonData)
{
foreach (var itemInfo in item.detail)
{
switch (item.TransType)
{
case "委外退货":
string sqlNotices = @"select * from ICSODeliveryNotice where ODNCode='{0}' and Sequence='{1}' and ODNType='2' and WorkPoint='{2}'";
sqlNotices = string.Format(sqlNotices, item.TransCode, itemInfo.TransSequence, item.WorkPoint);
DataTable Notices = DBHelper.SQlReturnData(sqlNotices, cmd);
if (Notices.Rows.Count < 0)
{
throw new Exception("单据已经关闭!");
}
foreach (DataRow itemdata in Notices.Rows)
{
int IssueQuantity = Convert.ToInt32(itemdata["RCVQuantity"]);//入库数量
int Quantity = Convert.ToInt32(itemdata["Quantity"]);//数量
int CurrentQuantity = Convert.ToInt32(Convert.ToDouble(itemInfo.CurrentQuantity));
int numQuantity = IssueQuantity + CurrentQuantity;//总数量
if (numQuantity > Quantity)
{
throw new Exception("应退数量大于实际数量");
}
}
//修改退货表
sql = " update ICSODeliveryNotice set RCVQuantity = RCVQuantity + '{0}' where ODNCode= '{1}' and WorkPoint='{2}' and Sequence='{3}' ";
sql = string.Format(sql, itemInfo.CurrentQuantity, item.TransCode, item.WorkPoint, itemInfo.TransSequence);
cmd.CommandText = sql;
num = cmd.ExecuteNonQuery();
//修改库存
sqlInfo = @"update ICSWareHouseLotInfo set Quantity= Quantity -'{0}' where lotno='{1}' and WorkPoint='{2}' ";
sqlInfo = string.Format(sqlInfo, itemInfo.CurrentQuantity, itemInfo.LotNo, item.WorkPoint);
cmd.CommandText = sqlInfo;
num = cmd.ExecuteNonQuery();
///添加日志表
#region 添加日志
string sqlLogw = @"INSERT INTO [dbo].[ICSWareHouseLotInfoLog]
([ID]
,[TransCode]
,[TransSequence]
,[LotNo]
,[InvCode]
,[FromWarehouseCode]
,[FromLocationCode]
,[ToWarehouseCode]
,[ToLocationCode]
,[Quantity]
,[Memo]
,[Lock]
,[TransType]
,[BusinessCode]
,[ERPID]
,[ERPDetailID]
,[ERPCode]
,[ERPSequence]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
(select newid(),A.ODNCode,A.Sequence,'{0}',a.InvCode ,' ', ' ',b.WarehouseCode,b.LocationCode,'{1}',' ','0','2','20',' ',' ',' ',' ','{2}',e.F_RealName,'{3}','{4}',' '
from ICSODeliveryNotice a--主表
left join ICSWareHouseLotInfo b on b.LotNo='{0}'
left join Sys_SRM_User e on e.F_Account='{2}' and e.F_Location='{4}'
where a.ODNCode='{5}' and a.WorkPoint='{4}' and Sequence='{6}')";
sqlLogw = string.Format(sqlLogw, itemInfo.LotNo, item.Quantity, item.User, DateTime.Now, item.WorkPoint, item.TransCode, itemInfo.TransSequence, itemInfo.Sequence);
cmd.CommandText = sqlLogw;
int numlogs = cmd.ExecuteNonQuery();
#endregion
#region ERP
sqlERP = @" select a.VenCode ,a.POID,b.ToWarehouseCode,b.TransCode,b.MUSER,b.TransSequence,b.InvCode,a.ODNCode ,(getdate())as Mtime from ICSODeliveryNotice a
inner join ICSWareHouseLotInfoLog b on a.ODNCode=b.TransCode and b.TransSequence=a.Sequence
where a.ODNType='2' and a.odncode='{0}' and b.WorkPoint='{1}' and b.Memo <> '1'
group by a.VenCode ,a.POID,b.ToWarehouseCode,b.TransCode,b.MUSER,b.TransSequence,b.InvCode,a.ODNCode";
sqlERP = string.Format(sqlERP, item.TransCode, item.WorkPoint);
table = DBHelper.SQlReturnData(sqlERP, cmd);
sqlERPDetil = @"select a.TransSequence,b.InvCode,sum(a.Quantity) as Quantity, isnull((b.Amount), 0) as Amount ,Currency,ISNULL((UnitPrice),0) AS UnitPrice,b.ODNDetailID from ICSWareHouseLotInfoLog a
inner JOIN ICSODeliveryNotice B ON b.ODNCode = a.TransCode and a.TransSequence = b.Sequence
where b.ODNCode='{0}' and a.Memo <> '1' and a.WorkPoint='{1}'
group by a.TransSequence,b.InvCode,a.Quantity, Amount ,Currency,UnitPrice,b.ODNDetailID";
sqlERPDetil = string.Format(sqlERPDetil, item.TransCode, item.WorkPoint);
DataTable ERPtable = DBHelper.SQlReturnData(sqlERPDetil, cmd);
List<ERPODNRT> docmodel = new List<ERPODNRT>();
foreach (DataRow dtIn in table.Rows)
{
ERPODNRT doc = new ERPODNRT();
doc.VenCode = dtIn["VenCode"].ToString();
//doc.POCode = dtIn["POID"].ToString();
doc.User = dtIn["MUSER"].ToString();
doc.MTime = dtIn["Mtime"].ToString();
doc.WHCode = dtIn["ToWarehouseCode"].ToString();
doc.ODNRTCode = dtIn["Odncode"].ToString();
List<ERPODNRTList> list = new List<ERPODNRTList>();
foreach (DataRow dtList in ERPtable.Rows)
{
ERPODNRTList docc = new ERPODNRTList();
docc.Sequence = dtList["TransSequence"].ToString();
docc.InvCode = dtList["InvCode"].ToString();
docc.Quantity = dtList["Quantity"].ToString();
docc.Amount = dtList["Amount"].ToString();
docc.Currency = dtList["Currency"].ToString();
docc.UnitPrice = dtList["UnitPrice"].ToString();
docc.ODNRTDetailID = dtList["ODNDetailID"].ToString();
list.Add(docc);
}
doc.details = list;
docmodel.Add(doc);
}
IstrErp = JsonConvert.SerializeObject(docmodel);
log.Info("委外退货ERPJSON" + IstrErp);
iresult = HttpPost("委外退货", ERPUrl.OutsourcingReturnBackURL, IstrErp);
Result OtherOutResult = new Result();
OtherOutResult = JsonConvert.DeserializeObject<Result>(iresult);
int numInfo = 0;
if (OtherOutResult.Success == false)
{
throw new Exception(OtherOutResult.Message);
}
else
{
List<ERPJsonRetun> list = new List<ERPJsonRetun>();
//string nn = OtherOutResult.Data.ToString();//LOTStockModel
list = JsonConvert.DeserializeObject<List<ERPJsonRetun>>(OtherOutResult.Data.ToString());
foreach (var items in list)
{
string ERPupdate = @"update ICSWareHouseLotInfoLog set ERPID='{0}',ERPDetailID='{1}',ERPCode='{2}',ERPSequence='{3}',Memo='1'
where TransCode='{4}' and TransSequence ='{5}'";
ERPupdate = string.Format(ERPupdate, items.ID, items.DetailID, items.RCVNEGCode, items.Sequence, item.TransCode, itemInfo.TransSequence);
cmd.CommandText = ERPupdate;
numInfo = cmd.ExecuteNonQuery();
}
if (numInfo > 0)
{
cmd.Transaction.Commit();
}
else
{
cmd.Transaction.Rollback();
}
}
#endregion
if (numlogs <= 0)
{
cmd.Transaction.Rollback();
}
else
{
cmd.Transaction.Commit();
}
return 0;
case "材料出库":
string sqlMOPick = @"SELECT IssueQuantity,Quantity,* from ICSMOPick
where MODetailID= (SELECT ID FROM ICSMO WHERE MOCode='{0}') and InvCode=(select InvCode from ICSInventoryLot where LotNo='{1}' AND WorkPoint='{2}')";
sqlMOPick = string.Format(sqlMOPick, item.TransCode, itemInfo.LotNo, item.WorkPoint);
//cmd.CommandText = sqlMOPick;
DataTable data = DBHelper.SQlReturnData(sqlMOPick, cmd);
foreach (DataRow itemdata in data.Rows)
{
int IssueQuantity = Convert.ToInt32(itemdata["IssueQuantity"]);
int Quantity = Convert.ToInt32(itemdata["Quantity"]);
int CurrentQuantity = Convert.ToInt32(Convert.ToDouble(itemInfo.CurrentQuantity));
int numQuantity = IssueQuantity + CurrentQuantity;
if (numQuantity > Quantity)
{
throw new Exception("应退数量大于实际数量");
}
}
sql = " update ICSMOPick set IssueQuantity= IssueQuantity + '{0}' where MODetailID= (SELECT ID FROM ICSMO WHERE MOCode='{1}') and WorkPoint='{2}' and InvCode=(select InvCode from ICSInventoryLot where LotNo='{3}' )";
sql = string.Format(sql, itemInfo.CurrentQuantity, item.TransCode, item.WorkPoint, itemInfo.LotNo);
cmd.CommandText = sql;
num = cmd.ExecuteNonQuery();
if (num <= 0)
{
throw new Exception("条码不存在!");
}
else
{
string sqlVerification = @"select * from ICSWareHouseLotInfo where lotno='{0}' and '{2}'<= Quantity and WorkPoint='{1}'";
sqlVerification = string.Format(sqlVerification, itemInfo.LotNo, item.WorkPoint, itemInfo.CurrentQuantity);
DataTable dataTableNum = DBHelper.SQlReturnData(sqlVerification, cmd);
if (dataTableNum.Rows.Count <= 0)
{
throw new Exception("输入数量大于库存数量");
}
else
{
sqlInfo = @"update ICSWareHouseLotInfo set Quantity= Quantity -'{0}' where lotno='{1}' ";
sqlInfo = string.Format(sqlInfo, itemInfo.CurrentQuantity, itemInfo.LotNo, item.WorkPoint);
cmd.CommandText = sqlInfo;
num = cmd.ExecuteNonQuery();
//DBHelper.CmdExecuteNonQuery(sqlInfo, cmd, "成功");
//cmd.Transaction.Commit();
log.Info("材料出库" + sql);
}
///添加日志表
#region 添加日志
string sqlLogs = @"INSERT INTO [dbo].[ICSWareHouseLotInfoLog]
([ID]
,[TransCode]
,[TransSequence]
,[LotNo]
,[InvCode]
,[FromWarehouseCode]
,[FromLocationCode]
,[ToWarehouseCode]
,[ToLocationCode]
,[Quantity]
,[Memo]
,[Lock]
,[TransType]
,[BusinessCode]
,[ERPID]
,[ERPDetailID]
,[ERPCode]
,[ERPSequence]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
(select newid(),'{5}','{6}','{0}',b.InvCode ,' ', ' ',b.WarehouseCode,b.LocationCode,'{1}',' ','0','2','21',' ',' ',' ',' ','{2}',e.F_RealName,'{3}','{4}',' '
from
ICSWareHouseLotInfo b
left join Sys_SRM_User e on e.F_Account='{2}' and e.F_Location='{4}'
where b.LotNo='{0}' and b.WorkPoint='{4}' )";
sqlLogs = string.Format(sqlLogs, itemInfo.LotNo, itemInfo.CurrentQuantity, item.User, DateTime.Now, item.WorkPoint, item.TransCode, itemInfo.TransSequence, itemInfo.Sequence);
cmd.CommandText = sqlLogs;
num = cmd.ExecuteNonQuery();
if (num <= 0)
{
cmd.Transaction.Rollback();
}
else
{
cmd.Transaction.Commit();
}
#endregion
#region ERP
sqlERP = @"select DepCode,FromWarehouseCode,MOCode,Sequence,a.MUSER ,(getdate())as Mtime,b.TransType from ICSMO a
left join ICSWareHouseLotInfoLog b on a.MOCode=b.TransCode and a.WorkPoint=b.WorkPoint and a.InvCode=b.InvCode
where MOCode='{0}' and a.WorkPoint='{1}' ";
sqlERP = string.Format(sqlERP, item.TransCode, item.WorkPoint);
table = DBHelper.SQlReturnData(sqlERP, cmd);
sqlERPDetil = @"select a.TransSequence,b.InvCode,a.Quantity, isnull((b.Amount),0)as Amount ,PickID from ICSWareHouseLotInfoLog a
LEFT JOIN ICSMO B ON B.MOCode=A.TransCode
left join ICSMOPick C on C.MODetailID=B.ID where LotNo='{0}' and c.Sequence=a.TransSequence and a.EATTRIBUTE1=b.Sequence and a.Memo<>'1'";
sqlERPDetil = string.Format(sqlERPDetil, itemInfo.LotNo);
DataTable ERPtabless = DBHelper.SQlReturnData(sqlERPDetil, cmd);
List<IssueDoc> docmodelss = new List<IssueDoc>();
foreach (DataRow dt in table.Rows)
{
IssueDoc doc = new IssueDoc();
doc.DepCode = dt["DepCode"].ToString();
doc.WHCode = dt["FromWarehouseCode"].ToString();
doc.SourceType = dt["MOCode"].ToString();
doc.SourceCode = "生产订单";
doc.User = dt["MUSER"].ToString();
doc.MTime = dt["Mtime"].ToString();
List<IssueDocList> list = new List<IssueDocList>();
foreach (DataRow dtList in ERPtabless.Rows)
{
IssueDocList docc = new IssueDocList();
docc.Sequence = dtList["TransSequence"].ToString();
docc.InvCode = dtList["InvCode"].ToString();
docc.Quantity = dtList["Quantity"].ToString();
docc.Amount = dtList["Amount"].ToString();
docc.SourceDetailID = dtList["PickID"].ToString();
list.Add(docc);
}
doc.details = list;
docmodelss.Add(doc);
}
IstrErp = JsonConvert.SerializeObject(docmodelss);
iresult = HttpPost("材料出库", ERPUrl.MOIssueDocURL, IstrErp);
Result OtherOutResultss = new Result();
OtherOutResultss = JsonConvert.DeserializeObject<Result>(iresult);
if (OtherOutResultss.Success == false)
{
throw new Exception(OtherOutResultss.Message);
}
else
{
//OtherOutResult.Data;
}
#endregion
}
return 0;
case "生产退料":
sql = @"update ICSMOApplyNegDetail set Quantity='{0}',Amount='{1}',IssueNegQuantity =((select sum(IssueNegQuantity) from ICSODelICSMOApplyNegDetailiveryNotice where ApplyNegCode='{2}') - '{0}'), MUSER='{3}',MTIME='{4}' where ApplyNegCode='{2}' and WorkPoint='{5}'";
sql = string.Format(sql, item.Quantity, item.Amount, item.TransCode, item.User, item.MTime, item.WorkPoint);
cmd.CommandText = sql;
num = cmd.ExecuteNonQuery();
return num;
case "产品入库":
sql = @"update ICSODeliveryNotice set Quantity='{0}',Amount='{1}'RCVQuantity =((select sum(RCVQuantity) from ICSODeliveryNotice where ODNCode='{2}') - '{0}') ,MUSER='{3}',MTIME='{4}' where ODNCode='{2}' and WorkPoint='{5}'";
sql = string.Format(sql, itemInfo.CurrentQuantity, itemInfo.CurrentAmount, item.TransCode, item.User, item.MTime, item.WorkPoint);
cmd.CommandText = sql;
num = cmd.ExecuteNonQuery();
if (num > 0)
{
//添加到日志表
}
return num;
case "销售发货":
#region 添加到库存表/日志表
///验证条码是否存在或者是否上架
sqlInfo = @"select * from ICSInventoryLot where LotNo='{0}'";
sqlInfo = string.Format(sqlInfo, itemInfo.LotNo);
cmd.CommandText = sqlInfo;
table = DBHelper.SQlReturnData(sqlInfo, cmd);//返回条数
if (table.Rows.Count <= 0)
{
throw new Exception("条码不存在!");
}
///查询销售订单是否已经关闭
sqlInfo = @"select * from ICSSDN where SDNCode='{0}' and Sequence='{1}' and Status='3' and Type='1' and WorkPoint='{2}'";
sqlInfo = string.Format(sqlInfo, item.TransCode, itemInfo.TransSequence, item.WorkPoint);
cmd.CommandText = sqlInfo;
DataTable tableInfo = DBHelper.SQlReturnData(sqlInfo, cmd);//返回条数
if (tableInfo.Rows.Count > 0)
{
throw new Exception("销售订单已经关闭!");
}
else
{
string sqlVerification = @"select * from ICSWareHouseLotInfo where lotno='{0}' and '{2}'<= Quantity and WorkPoint='{1}'";
sqlVerification = string.Format(sqlVerification, itemInfo.LotNo, item.WorkPoint, itemInfo.CurrentQuantity);
DataTable dataTablel = DBHelper.SQlReturnData(sqlVerification, cmd);
if (dataTablel.Rows.Count <= 0)
{
throw new Exception("输入数量大于库存数量");
}
else
{
///修改销售订单表已发数量
sql = @"update ICSSDN set SDNQuantity= SDNQuantity + '{4}' ,MTIME='{1}' where SDNCode ='{2}' and InvCode=(select InvCode from ICSInventoryLot where lotno='{0}' ) and WorkPoint='{3}'";
sql = string.Format(sql, itemInfo.LotNo, DateTime.Now, item.TransCode, item.WorkPoint, itemInfo.CurrentQuantity);
cmd.CommandText = sql;
num = cmd.ExecuteNonQuery();
//修改库存表的数量
sql = @" update ICSWareHouseLotInfo set Quantity=Quantity -'{4}',MTIME='{1}' where lotno ='{0}' and InvCode in (select InvCode from ICSInventoryLot where lotno='{0}' and WorkPoint ='{3}') and WorkPoint='{3}' ";
sql = string.Format(sql, itemInfo.LotNo, DateTime.Now, item.TransCode, item.WorkPoint, itemInfo.CurrentQuantity);
cmd.CommandText = sql;
num = cmd.ExecuteNonQuery();
// cmd.Transaction.Commit();
#region 添加日志
if (num > 0)
{
string sqlLogInfoInf = @"INSERT INTO [dbo].[ICSWareHouseLotInfoLog]
([ID]
,[TransCode]
,[TransSequence]
,[LotNo]
,[InvCode]
,[FromWarehouseCode]
,[FromLocationCode]
,[ToWarehouseCode]
,[ToLocationCode]
,[Quantity]
,[Memo]
,[Lock]
,[TransType]
,[BusinessCode]
,[ERPID]
,[ERPDetailID]
,[ERPCode]
,[ERPSequence]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
VALUES
(newid()
,'{4}'
,' '
,'{0}'
,(SELECT InvCode FROM ICSInventoryLot WHERE LotNo='{0}')
,(SELECT WarehouseCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
,(SELECT LocationCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
,''
,''
,'{5}'
,''
,''
,'21'
,''
,''
,''
,''
,''
,'{1}'
,'{1}'
,'{2}'
,'{3}'
,'')";
sqlLogInfoInf = string.Format(sqlLogInfoInf, itemInfo.LotNo, item.User, DateTime.Now, item.WorkPoint, item.TransCode, itemInfo.CurrentQuantity);
cmd.CommandText = sqlLogInfoInf;
num = cmd.ExecuteNonQuery();
//cmd.Transaction.Commit();
}
#endregion
#region ERP接口
string ERPSnd = @"select A.CusCode,A.SDNCode ,B.MUSER,MAX(B.MTIME) AS MTIME,b.TransSequence,b.TransCode,B.InvCode,b.FromWarehouseCode FROM ICSSDN a
inner join ICSWareHouseLotInfoLog b on a.SDNCode=b.TransCode and b.TransSequence=a.Sequence
where a.Type='1' and b.TransCode='{0}' and b.TransSequence='{1}' and b.WorkPoint='{2}'
group by A.CusCode,A.SDNCode ,B.MUSER,b.TransSequence,b.TransCode,B.InvCode,b.FromWarehouseCode";
ERPSnd = string.Format(ERPSnd, item.TransCode, itemInfo.TransSequence, item.WorkPoint);
table = DBHelper.SQlReturnData(ERPSnd, cmd);
string ERPSndList = @"select a.TransSequence,b.InvCode,sum(a.Quantity) as Quantity , isnull((b.Amount),0)as Amount ,b.SDNDetailID from ICSWareHouseLotInfoLog a
inner JOIN ICSSDN B ON b.SDNCode=a.TransCode and a.TransSequence=b.Sequence
where a.LotNo='{0}' and a.Memo<>'1' and b.WorkPoint='{1}' and b.Type='1'
group by a.TransSequence,b.InvCode, Amount ,b.SDNDetailID";
ERPSndList = string.Format(ERPSndList, itemInfo.LotNo, item.WorkPoint);
DataTable ERPtbSndList = DBHelper.SQlReturnData(ERPSndList, cmd);
List<ERPICSSDN> ERPemo = new List<ERPICSSDN>();
foreach (DataRow itemNotice in table.Rows)
{
ERPICSSDN noticeModel = new ERPICSSDN();
noticeModel.CusCode = itemNotice["CusCode"].ToString();
noticeModel.WHCode = itemNotice["FromWarehouseCode"].ToString();
noticeModel.SDNRTCode = itemNotice["SDNCode"].ToString();
noticeModel.User = itemNotice["MUSER"].ToString();
noticeModel.MTime = itemNotice["MTIME"].ToString();
List<ERPICSSDNList> noticeModelList = new List<ERPICSSDNList>();
foreach (DataRow ERPNoticeList in ERPtbSndList.Rows)
{
ERPICSSDNList listInfo = new ERPICSSDNList();
listInfo.Sequence = ERPNoticeList["TransSequence"].ToString();
listInfo.InvCode = ERPNoticeList["InvCode"].ToString();
listInfo.Quantity = ERPNoticeList["Quantity"].ToString();
listInfo.Amount = ERPNoticeList["Amount"].ToString();
listInfo.SDNRTDetailID = ERPNoticeList["SDNDetailID"].ToString();
noticeModelList.Add(listInfo);
}
noticeModel.details = noticeModelList;
ERPemo.Add(noticeModel);
string ERPICSSDN = JsonConvert.SerializeObject(ERPemo);
string Emoiresultsdn = HttpPost("销售出库单", ERPUrl.SalesDeliveryNoticeURL, ERPICSSDN);
Result OtherOutI = new Result();
OtherOutI = JsonConvert.DeserializeObject<Result>(Emoiresultsdn);
if (OtherOutI.Message != "200")
{
throw new Exception(OtherOutI.Message);
}
else
{
//OtherOutResult.Data;
}
}
#endregion
}
}
return 0;
#endregion
case "采购退货":
string sqlNotice = @"select * from ICSDeliveryNotice where DNCode='{0}' and Sequence='{1}' and DNType='2' and Status='3' and WorkPoint='{2}'";
sqlNotice = string.Format(sqlNotice, item.TransCode, itemInfo.TransSequence, item.WorkPoint);
DataTable Notice = DBHelper.SQlReturnData(sqlNotice, cmd);
if (Notice.Rows.Count > 0)
{
throw new Exception("单据已经关闭!");
}
foreach (DataRow itemdata in Notice.Rows)
{
int IssueQuantity = Convert.ToInt32(itemdata["RCVQuantity"]);//入库数量
int Quantity = Convert.ToInt32(itemdata["Quantity"]);//数量
int CurrentQuantity = Convert.ToInt32(Convert.ToDouble(itemInfo.CurrentQuantity));
int numQuantity = IssueQuantity + CurrentQuantity;//总数量
if (numQuantity > IssueQuantity)
{
throw new Exception("应退数量大于实际数量");
}
}
//修改退货表
sql = " update ICSDeliveryNotice set RCVQuantity = RCVQuantity + '{0}' where DNCode= '{1}' and WorkPoint='{2}' and Sequence='{3}' ";
sql = string.Format(sql, itemInfo.CurrentQuantity, item.TransCode, item.WorkPoint, itemInfo.TransSequence);
cmd.CommandText = sql;
num = cmd.ExecuteNonQuery();
//修改库存
sqlInfo = @"update ICSWareHouseLotInfo set Quantity= Quantity -'{0}' where lotno='{1}' and WorkPoint='{2}' ";
sqlInfo = string.Format(sqlInfo, itemInfo.CurrentQuantity, itemInfo.LotNo, item.WorkPoint);
cmd.CommandText = sqlInfo;
num = cmd.ExecuteNonQuery();
///添加日志表
#region 添加日志
string sqlLog = @"INSERT INTO [dbo].[ICSWareHouseLotInfoLog]
([ID]
,[TransCode]
,[TransSequence]
,[LotNo]
,[InvCode]
,[FromWarehouseCode]
,[FromLocationCode]
,[ToWarehouseCode]
,[ToLocationCode]
,[Quantity]
,[Memo]
,[Lock]
,[TransType]
,[BusinessCode]
,[ERPID]
,[ERPDetailID]
,[ERPCode]
,[ERPSequence]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
( select newid(),'{5}' ,'{6}' ,'{0}',b.InvCode,b.WarehouseCode,b.LocationCode,'','','{1}' ,'','','2' ,'' ,'' ,'' ,'','' ,'{2}' ,c.F_RealName,'{3}' ,'{4}' ,'{7}'
from ICSWareHouseLotInfo b
left join Sys_SRM_User c on c.F_Account='{2}' and c.F_Location='{4}'
where b.LotNo='{0}' and b.WorkPoint='{4}')";
sqlLog = string.Format(sqlLog, itemInfo.LotNo, itemInfo.CurrentQuantity, item.User, DateTime.Now, item.WorkPoint, item.TransCode, itemInfo.TransSequence, itemInfo.Sequence);
cmd.CommandText = sqlLog;
int numlog = cmd.ExecuteNonQuery();
#endregion
#region ERP
sqlERP = @" select a.VenCode ,a.POID,b.FromWarehouseCode,b.TransCode,b.MUSER,b.TransSequence,b.InvCode,a.dncode,(getdate())as Mtime from ICSDeliveryNotice a
inner join ICSWareHouseLotInfoLog b on a.DNCode=b.TransCode and b.TransSequence=a.Sequence
where a.DNType='2' and b.TransCode='{0}' and b.WorkPoint='{1}' and a.Memo <> '1'
group by a.VenCode ,a.POID,b.FromWarehouseCode,b.TransCode,b.MUSER,b.TransSequence,b.InvCode,a.dncode";
sqlERP = string.Format(sqlERP, item.TransCode, item.WorkPoint);
table = DBHelper.SQlReturnData(sqlERP, cmd);
sqlERPDetil = @"select a.TransSequence,b.InvCode,sum(a.Quantity) as Quantity, isnull((b.Amount), 0) as Amount ,Currency,UnitPrice,b.DNDetailID from ICSWareHouseLotInfoLog a
inner JOIN ICSDeliveryNotice B ON b.DNCode = a.TransCode and a.TransSequence = b.Sequence
where LotNo = '{0}' and a.Memo <> '1' and a.WorkPoint='{1}'
group by a.TransSequence,b.InvCode,a.Quantity, Amount ,Currency,UnitPrice,b.DNDetailID";
sqlERPDetil = string.Format(sqlERPDetil, itemInfo.LotNo, item.WorkPoint);
DataTable ERPtables = DBHelper.SQlReturnData(sqlERPDetil, cmd);
List<ERPPurchaseOrder> docmodels = new List<ERPPurchaseOrder>();
foreach (DataRow dtIn in table.Rows)
{
ERPPurchaseOrder doc = new ERPPurchaseOrder();
doc.VenCode = dtIn["VenCode"].ToString();
doc.POCode = dtIn["POID"].ToString();
doc.User = dtIn["MUSER"].ToString();
doc.MTime = dtIn["Mtime"].ToString();
doc.WHCode = dtIn["FromWarehouseCode"].ToString();
doc.DNCode = dtIn["dncode"].ToString();
List<ERPPurchaseOrderList> list = new List<ERPPurchaseOrderList>();
foreach (DataRow dtList in ERPtables.Rows)
{
ERPPurchaseOrderList docc = new ERPPurchaseOrderList();
docc.Sequence = dtList["TransSequence"].ToString();
docc.InvCode = dtList["InvCode"].ToString();
docc.Quantity = dtList["Quantity"].ToString();
docc.Amount = dtList["Amount"].ToString();
docc.Currency = dtList["Currency"].ToString();
docc.UnitPrice = dtList["UnitPrice"].ToString();
docc.DNDetailID = dtList["DNDetailID"].ToString();
list.Add(docc);
}
doc.details = list;
docmodels.Add(doc);
}
IstrErp = JsonConvert.SerializeObject(docmodels);
iresult = HttpPost("采购退货", ERPUrl.PurchaseReturnBackURL, IstrErp);
Result OtherOutResults = new Result();
OtherOutResult = JsonConvert.DeserializeObject<Result>(iresult);
int numInfos = 0;
if (OtherOutResult.Success == false)
{
throw new Exception(OtherOutResult.Message);
}
else
{
List<ERPJsonRetun> list = new List<ERPJsonRetun>();
//string nn = OtherOutResult.Data.ToString();//LOTStockModel
list = JsonConvert.DeserializeObject<List<ERPJsonRetun>>(OtherOutResult.Data.ToString());
foreach (var items in list)
{
string ERPupdate = @"update ICSWareHouseLotInfoLog set ERPID='{0}',ERPDetailID='{1}',ERPCode='{2}',ERPSequence='{3}',Memo='1'
where TransCode='{4}' and TransSequence ='{5}'";
ERPupdate = string.Format(ERPupdate, items.ID, items.DetailID, items.RCVNEGCode, items.Sequence, item.TransCode, itemInfo.TransSequence);
cmd.CommandText = ERPupdate;
numInfos = cmd.ExecuteNonQuery();
}
if (numInfos > 0)
{
cmd.Transaction.Commit();
}
else
{
cmd.Transaction.Rollback();
}
//string sqlupdate = @"update ICSDeliveryNotice set DNCode='{0}',Sequence='{1}',DNID='{2}',DNDetailID='{3}'
// where DNCode='{4}'";
//sqlupdate = string.Format(sqlupdate);
}
#endregion
return 0;
case "委外发料":
string str = itemInfo.TransSequence;
string[] arrStr = str.Split(',');
string BSequence = arrStr[0].ToString();
string ASequence = arrStr[1].ToString();
string sqlverification = @"select * from ICSOOPick where OODetailID = (select OODetailID from ICSOutsourcingOrder where OOCode='{0}' and Sequence='{2}' and WorkPoint='{1}') and WorkPoint='{1}' AND Sequence='{3}'";
sqlverification = string.Format(sqlverification, item.TransCode, item.WorkPoint, BSequence, ASequence);
DataTable tabletion = DBHelper.SQlReturnData(sqlverification, cmd);
if (tabletion.Rows.Count <= 0)
{
throw new Exception("发料单不存在!");
}
sql = @"update ICSOOPick set IssueQuantity= (select IssueQuantity from ICSOOPick where OODetailID = (select OODetailID from ICSOutsourcingOrder where OOCode='{1}' and Sequence='{3}' and WorkPoint='{2}') and WorkPoint='{2}' AND Sequence='{4}' ) + '{0}' where OODetailID = (select OODetailID from ICSOutsourcingOrder where OOCode='{1}' and Sequence='{3}' and WorkPoint='{2}') and WorkPoint='{2}' AND Sequence='{4}' ";
sql = string.Format(sql, itemInfo.CurrentQuantity, item.TransCode, item.WorkPoint, BSequence, ASequence);
cmd.CommandText = sql;
num = cmd.ExecuteNonQuery();
sqlInfo = @"update ICSWareHouseLotInfo set Quantity= (select Quantity from ICSWareHouseLotInfo where lotno='{1}' and WorkPoint='{2}' ) -'{0}' where lotno='{1}' and WorkPoint='{2}' ";
sqlInfo = string.Format(sqlInfo, itemInfo.CurrentQuantity, itemInfo.LotNo, item.WorkPoint);
cmd.CommandText = sqlInfo;
num = cmd.ExecuteNonQuery();
#region 添加日志
string sqlPickLog = @"INSERT INTO [dbo].[ICSWareHouseLotInfoLog]
([ID]
,[TransCode]
,[TransSequence]
,[LotNo]
,[InvCode]
,[FromWarehouseCode]
,[FromLocationCode]
,[ToWarehouseCode]
,[ToLocationCode]
,[Quantity]
,[Memo]
,[Lock]
,[TransType]
,[BusinessCode]
,[ERPID]
,[ERPDetailID]
,[ERPCode]
,[ERPSequence]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
( select newid(),'{5}' ,'{6}' ,'{0}',b.InvCode,b.WarehouseCode,b.LocationCode,'','','{1}' ,'','','7' ,'' ,'' ,'' ,'','' ,'{2}' ,c.F_RealName,'{3}' ,'{4}' ,'{7}'
from ICSWareHouseLotInfo b
left join Sys_SRM_User c on c.F_Account='{2}' and c.F_Location='{4}'
where b.LotNo='{0}' and b.WorkPoint='{4}')";
sqlPickLog = string.Format(sqlPickLog, itemInfo.LotNo, itemInfo.CurrentQuantity, item.User, DateTime.Now, item.WorkPoint, item.TransCode, BSequence, itemInfo.TransSequence);
cmd.CommandText = sqlPickLog;
num = cmd.ExecuteNonQuery();
//if (numPicklog <= 0)
//{
// cmd.Transaction.Rollback();
//}
//else
//{
// cmd.Transaction.Commit();
//}
#endregion
#region ERP
string sqlERPOOPick = @" select b.DepCode,FromWarehouseCode,b.OOCode,a.MUSER ,(getdate())as Mtime from ICSWareHouseLotInfoLog a
left join ICSOutsourcingOrder b ON A.TransCode=B.OOCode and b.Sequence=a.TransSequence
left join ICSOOPick C on b.OODetailID=c.OODetailID and a.WorkPoint=b.WorkPoint and a.InvCode=b.InvCode
where b.OOCode='{0}' and a.WorkPoint='{1}' and a.memo<>'1'";
sqlERPOOPick = string.Format(sqlERPOOPick, item.TransCode, item.WorkPoint);
table = DBHelper.SQlReturnData(sqlERPOOPick, cmd);
string sqlERPPickList = @"select a.TransCode, a.TransSequence,a.InvCode,sum(a.Quantity) as Quantity , isnull((b.Amount),0)as Amount,c.PickID from ICSWareHouseLotInfoLog a
left JOIN ICSOutsourcingOrder B ON B.OOCode=A.TransCode and a.TransSequence=b.Sequence
left join ICSOOPick C on C.OODetailID=B.OODetailID and c.Sequence=a.TransSequence
where LotNo='{0}' and a.Memo<>'1'
group by a.TransCode, a.TransSequence,a.InvCode,b.Amount ,c.PickID ";
sqlERPPickList = string.Format(sqlERPPickList, itemInfo.LotNo);
DataTable ERPOOPick = DBHelper.SQlReturnData(sqlERPPickList, cmd);
string jsonPickList = null;
List<IssueDoc> docPickmodel = new List<IssueDoc>();
foreach (DataRow dt in table.Rows)
{
IssueDoc doc = new IssueDoc();
doc.DepCode = dt["DepCode"].ToString();
doc.WHCode = dt["FromWarehouseCode"].ToString();
doc.SourceType = dt["OOCode"].ToString();
doc.SourceCode = "委外发料";
doc.User = dt["MUSER"].ToString();
doc.MTime = dt["Mtime"].ToString();
List<IssueDocList> list = new List<IssueDocList>();
foreach (DataRow dtList in ERPOOPick.Rows)
{
IssueDocList docc = new IssueDocList();
docc.Sequence = dtList["TransSequence"].ToString();
docc.InvCode = dtList["InvCode"].ToString();
docc.Quantity = dtList["Quantity"].ToString();
docc.Amount = dtList["Amount"].ToString();
docc.SourceDetailID = dtList["PickID"].ToString();
list.Add(docc);
}
doc.details = list;
docPickmodel.Add(doc);
//jsonList = JsonConvert.SerializeObject(doc);
}
string IstrPick = JsonConvert.SerializeObject(docPickmodel);
log.Info("委外发料ERP传入的json" + IstrPick);
string iresultPick = HttpPost("委外发料", ERPUrl.OutsourcingIssueDocURL, IstrPick);
Result OtherOutResultpick = new Result();
OtherOutResultpick = JsonConvert.DeserializeObject<Result>(iresultPick);
List<ERPJsonRetun> m = new List<ERPJsonRetun>();
if (OtherOutResultpick.Success == true)
{
string nn = OtherOutResultpick.Data.ToString();//LOTStockModel
m = JsonConvert.DeserializeObject<List<ERPJsonRetun>>(nn);
foreach (var items in m)
{
string ERPupdate = @"update ICSWareHouseLotInfoLog set ERPID='{0}',ERPDetailID='{1}',ERPCode='{2}',ERPSequence='{3}',Memo='1'
where TransCode='{4}' and TransSequence ='{5}'";
ERPupdate = string.Format(ERPupdate, items.ID, items.DetailID, items.IssueCode, items.Sequence, item.TransCode, BSequence);
cmd.CommandText = ERPupdate;
num = cmd.ExecuteNonQuery();
}
if (num > 0)
{
cmd.Transaction.Commit();
}
else
{
cmd.Transaction.Rollback();
}
}
else
{
cmd.Transaction.Rollback();
throw new Exception(OtherOutResultpick.Message);
}
#endregion
return 0;
case "其它出库":
string sqlOtherOut = @"select * from ICSOtherOut where OutCode = '{0}' and WorkPoint='{1}' AND Sequence='{2}'";
sqlOtherOut = string.Format(sqlOtherOut, item.TransCode, item.WorkPoint, itemInfo.TransSequence);
DataTable tabletionIn = DBHelper.SQlReturnData(sqlOtherOut, cmd);
if (tabletionIn.Rows.Count <= 0)
{
throw new Exception("杂发单不存在!");
}
string sqlVerificationNum = @"select * from ICSWareHouseLotInfo where lotno='{0}' and '{2}'<= Quantity and WorkPoint='{1}'";
sqlVerificationNum = string.Format(sqlVerificationNum, itemInfo.LotNo, item.WorkPoint, itemInfo.CurrentQuantity);
DataTable dataTable = DBHelper.SQlReturnData(sqlVerificationNum, cmd);
if (dataTable.Rows.Count <= 0)
{
throw new Exception("输入数量大于库存数量");
}
//修改出库表
sql = @"update ICSOtherOut set OutQuantity= (select sum(OutQuantity) from ICSOtherOut where OutCode = '{1}')+'{0}' where OutCode = '{1}' and WorkPoint='{2}' AND Sequence='{3}' ";
sql = string.Format(sql, itemInfo.CurrentQuantity, item.TransCode, item.WorkPoint, itemInfo.TransSequence);
cmd.CommandText = sql;
num = cmd.ExecuteNonQuery();
//修改库存
sqlInfo = @"update ICSWareHouseLotInfo set Quantity= (select sum(Quantity) from ICSWareHouseLotInfo where lotno='{1}' and WorkPoint='{2}' ) -'{0}' where lotno='{1}' and WorkPoint='{2}' ";
sqlInfo = string.Format(sqlInfo, itemInfo.CurrentQuantity, itemInfo.LotNo, item.WorkPoint);
cmd.CommandText = sqlInfo;
num = cmd.ExecuteNonQuery();
///添加日志
string sqlLogInfo = @"INSERT INTO [dbo].[ICSWareHouseLotInfoLog]
([ID]
,[TransCode]
,[TransSequence]
,[LotNo]
,[InvCode]
,[FromWarehouseCode]
,[FromLocationCode]
,[ToWarehouseCode]
,[ToLocationCode]
,[Quantity]
,[Memo]
,[Lock]
,[TransType]
,[BusinessCode]
,[ERPID]
,[ERPDetailID]
,[ERPCode]
,[ERPSequence]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
(select newid(),'{0}','{1}','{2}',a.InvCode ,' ', ' ',b.WarehouseCode,b.LocationCode,'{3}',' ','0','2','8',' ',' ',' ',' ','{4}',e.F_RealName,'{5}','{6}',' '
from ICSOtherOut a--主表
left join ICSWareHouseLotInfo b on b.LotNo='{2}'
left join Sys_SRM_User e on e.F_Account='{4}' and e.F_Location='{6}'
where a.mocode='{0}' and a.WorkPoint='{6}' and Sequence='{1}')";
sqlLogInfo = string.Format(sqlLogInfo, item.TransCode, itemInfo.TransSequence, itemInfo.LotNo, itemInfo.CurrentQuantity, item.User, DateTime.Now, item.WorkPoint);
//left join ICSWarehouse c on c.WarehouseCode = a.WHCode and c.WorkPoint = a.WorkPoint--仓库
// left join ICSLocation d on d.WHID = c.ID and d.WorkPoint = c.WorkPoint--库位
cmd.CommandText = sqlLogInfo;
int numInfoLot = cmd.ExecuteNonQuery();
if (numInfoLot > 0)
{
cmd.Transaction.Commit();
}
else
{
cmd.Transaction.Rollback();
}
return 0;
}
}
}
return 0;
}
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();
}
}
#endregion
#region 合并
/// <summary>
/// 合并 查询
/// </summary>
/// <param name="JsonData"></param>
/// <returns></returns>
public List<WMSTBarCodeModelInfo> LOTMergeGet(WMSTBarCodeModel JsonData)
{
List<WMSTBarCodeModelInfo> model = new List<WMSTBarCodeModelInfo>();
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
try
{
sql = @"SELECT
a.[ID] --唯一标识
,[TransCode] --源头单据号
,[TransSequence]--源头单据行号
,a.[LotNo] --条码
,a.[InvCode] --料品编码
,a.[Quantity] --数量
,c.WarehouseCode as WHCode --仓库编码
,c.WarehouseName as WHName --仓库名称
,d.LocationCode as LocationCode --库位代码
,d.LocationName as LocationName --库位名称
,e.name as BusinessCode
,a.MUSER --操作人
,a.[MTIME] --操作时间
FROM [ICSWMS_Base].[dbo].[ICSWareHouseLotInfoLog] a --主表出入库
left join ICSWareHouseLotInfo b on a.LotNo=b.LotNo and b.InvCode=a.InvCode and a.WorkPoint=b.WorkPoint --库存
left join ICSWarehouse c on c.WarehouseCode=b.WarehouseCode and c.WorkPoint=b.WorkPoint-- 仓库
left join ICSLocation d on b.LocationCode=d.LocationCode and b.WorkPoint=d.WorkPoint--库位
left join ICSType e on a.BusinessCode=e.ColumnCode and e.Code=a.BusinessCode and e.WorkPoint=a.WorkPoint --类型
where 1=1 ";
if (!string.IsNullOrEmpty(JsonData.TransCode))
{
sql += " and TransCode='{0}'";
sql = string.Format(sql, JsonData.TransCode);
}
if (!string.IsNullOrEmpty(JsonData.User))
{
sql += " and MUSER='{1}'";
sql = string.Format(sql, JsonData.User);
}
if (JsonData.MTime.ToString() != "0001/1/1 0:00:00")
{
sql += " and MTIME='{2}'";
sql = string.Format(sql, JsonData.MTime);
}
table = DBHelper.SQlReturnData(sql, cmd);
string json = JsonConvert.SerializeObject(table);
model = JsonConvert.DeserializeObject<List<WMSTBarCodeModelInfo>>(json);//<List<WMSSourceDocumentModel>>
cmd.Transaction.Commit();
return model;
}
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();
}
}
/// <summary>
/// 合并Create
/// </summary>
/// <param name="JsonData"></param>
/// <returns></returns>,
public List<WMSTBarCodeModelInfo> LOTMergeCreate(List<LOTCreateIModel> JsonData)
{
List<WMSTBarCodeModelInfo> model = new List<WMSTBarCodeModelInfo>();
var lotNo = string.Empty;
var CoreNo = string.Empty;//合并的条码
decimal num = 0;//合并的数量
var cnum = string.Empty;
string str = string.Empty;
string WorkPoint = null;
string UserName = string.Empty;
string TransNos = "";
int numInfo = 0;
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
try
{
List<string> list = new List<string>();
///第一个条码的数量
foreach (var item in JsonData)
{
lotNo = item.LotNo;//条码
UserName = item.User;
foreach (var itemInfo in item.detail)
{
CoreNo = itemInfo.CurrentLotNo;//合并的条码
num += Convert.ToDecimal(itemInfo.CurrentQuantity);//合并的数量
WorkPoint = itemInfo.WorkPoint;
list.Add(CoreNo);
}
}
//str = string.Join(",", list.ToArray());
///主表条码
//int UpdatenumInfo = 0;
foreach (var item in list.ToArray())
{
str = item.ToString();
string sql = @"update ICSWareHouseLotInfo set Quantity='0' where LotNo = '{0}' and WorkPoint='{1}'";
sql = string.Format(sql, str, WorkPoint);
cmd.CommandText = sql;
numInfo = cmd.ExecuteNonQuery();
}
string updateSql = @"update ICSWareHouseLotInfo set Quantity=(select Quantity from ICSWareHouseLotInfo where LotNo='{1}' and WorkPoint='{2}')+'{0}' where LotNo='{1}' and WorkPoint='{2}'";
updateSql = string.Format(updateSql, num, lotNo, WorkPoint);
cmd.CommandText = updateSql;
numInfo = cmd.ExecuteNonQuery();
string sqlLog = @"INSERT INTO [dbo].[ICSWareHouseLotInfoLog]
([ID]
,[TransCode]
,[TransSequence]
,[LotNo]
,[InvCode]
,[FromWarehouseCode]
,[FromLocationCode]
,[ToWarehouseCode]
,[ToLocationCode]
,[Quantity]
,[Memo]
,[Lock]
,[TransType]
,[BusinessCode]
,[ERPID]
,[ERPDetailID]
,[ERPCode]
,[ERPSequence]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
(select newid(),b.TransCode,b.TransSequence,'{0}',a.InvCode ,a.WarehouseCode,a.LocationCode ,'','',a.Quantity,' ','0','5','18',' ',' ',' ',' ','{1}',e.F_RealName,'{2}','{3}',' '
from ICSWareHouseLotInfo a--主表
left join ICSInventoryLotDetail b on b.LotNo=a.LotNo
left join Sys_SRM_User e on e.F_Account='{1}' and e.F_Location='{3}'
where a.LotNo='{0}' and a.WorkPoint='{3}' )";
sqlLog = string.Format(sqlLog, lotNo, UserName, DateTime.Now, WorkPoint);
cmd.CommandText = sqlLog;
int numLog = cmd.ExecuteNonQuery();
if (numLog > 0)
{
cmd.Transaction.Commit();
}
else
{
cmd.Transaction.Rollback();
}
return null;
}
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();
}
}
/// <summary>
/// 拆分
/// </summary>
/// <param name="JsonData"></param>
/// <returns></returns>
public List<WMSTBarCodeModelInfo> LOTSplitCreates(List<LOTCreateIModel> JsonData)
{
//List<WMSTBarCodeModelInfo> model = new List<WMSTBarCodeModelInfo>();
var lotNo = string.Empty;
var CoreNo = string.Empty;//拆分的条码
int num = 0;//拆分的数量
var cnum = string.Empty;//拆分总数量
string str = string.Empty;
string WorkPoint = string.Empty;//站点
string UserName = string.Empty;
int numInfo = 0;
Decimal numm = 0;
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
try
{
List<LOTCreateIModelInfo> list = new List<LOTCreateIModelInfo>();
///第一个条码的数量
foreach (var item in JsonData)
{
lotNo = item.LotNo;//条码
UserName = item.User;
WorkPoint = item.WorkPoint;
foreach (var itemInfo in item.detail)
{
LOTCreateIModelInfo modelInfo = new LOTCreateIModelInfo();
modelInfo.CurrentLotNo = itemInfo.CurrentLotNo;//拆分的条码
modelInfo.CurrentQuantity = itemInfo.CurrentQuantity;//拆分的数量
modelInfo.WorkPoint = itemInfo.WorkPoint;
numm += Convert.ToDecimal(itemInfo.CurrentQuantity);
list.Add(modelInfo);
}
}
//拆分之前记录日志
//string sqlFront = @"select * from ICSWareHouseLotInfo where LotNo='{0}' and WorkPoint='{1}'";
//sqlFront = string.Format(sqlFront,lotNo, WorkPoint);
string primaryLog = @"INSERT INTO [dbo].[ICSWareHouseLotInfoLog]
([ID]
,[TransCode]
,[TransSequence]
,[LotNo]
,[InvCode]
,[FromWarehouseCode]
,[FromLocationCode]
,[ToWarehouseCode]
,[ToLocationCode]
,[Quantity]
,[Memo]
,[Lock]
,[TransType]
,[BusinessCode]
,[ERPID]
,[ERPDetailID]
,[ERPCode]
,[ERPSequence]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
(select newid(),b.TransCode,b.TransSequence,'{0}',a.InvCode ,a.WarehouseCode,a.LocationCode ,'','',a.Quantity,' ','0','4','16',' ',' ',' ',' ','{1}',e.F_RealName,'{2}','{3}',' '
from ICSWareHouseLotInfo a--主表
left join ICSInventoryLotDetail b on b.LotNo=a.LotNo
left join Sys_SRM_User e on e.F_Account='{1}' and e.F_Location='{3}'
where a.LotNo='{0}' and a.WorkPoint='{3}')";
primaryLog = string.Format(primaryLog, lotNo, UserName, DateTime.Now, WorkPoint);
cmd.CommandText = primaryLog;
int primarynumLog = cmd.ExecuteNonQuery();
///拆分后的条码数量
foreach (var item in list.ToArray())
{
CoreNo = item.CurrentLotNo;//条码
num = Convert.ToInt32(item.CurrentQuantity);//数量
WorkPoint = item.WorkPoint;//站点
//拆分条码
string sql = @"INSERT INTO [dbo].[ICSWareHouseLotInfo]
([ID]
,[LotNo]
,[WarehouseCode]
,[LocationCode]
,[InvCode]
,[Quantity]
,[InDate]
,[LockQuantity]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
select newid()
,'{0}'
,WarehouseCode
,LocationCode
,InvCode
,'{1}'
,InDate
,LockQuantity
,'{2}'
,b.F_RealName
,'{3}'
,'{4}'
,EATTRIBUTE1
from ICSWareHouseLotInfo
left join Sys_SRM_User b on b.F_Account='{2}' and b.F_Location='{4}' ";
sql = string.Format(sql, CoreNo, num, UserName, DateTime.Now, WorkPoint);
cmd.CommandText = sql;
numInfo = cmd.ExecuteNonQuery();
if (numInfo == 0)
{
throw new Exception("已经拆分过,请无重复拆分," + "拆分的条码:" + CoreNo);
}
}
///拆分日志
foreach (var item in list.ToArray())
{
CoreNo = item.CurrentLotNo;//条码
num = Convert.ToInt32(item.CurrentQuantity);//数量
WorkPoint = item.WorkPoint;//站点
//拆分 日志
string sqlLogs = @"INSERT INTO [dbo].[ICSWareHouseLotInfoLog]
([ID]
,[TransCode]
,[TransSequence]
,[LotNo]
,[InvCode]
,[FromWarehouseCode]
,[FromLocationCode]
,[ToWarehouseCode]
,[ToLocationCode]
,[Quantity]
,[Memo]
,[Lock]
,[TransType]
,[BusinessCode]
,[ERPID]
,[ERPDetailID]
,[ERPCode]
,[ERPSequence]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
(select newid(),b.TransCode,b.TransSequence,'{0}',a.InvCode ,a.WarehouseCode,a.LocationCode ,'','','{4}',' ','0','4','15',' ',' ',' ',' ','{1}',e.F_RealName,'{2}','{3}',' '
from ICSWareHouseLotInfo a--主表
left join ICSInventoryLotDetail b on b.LotNo=a.LotNo
left join Sys_SRM_User e on e.F_Account='{1}' and e.F_Location='{3}'
where a.LotNo='{0}' and a.WorkPoint='{3}' )";
sqlLogs = string.Format(sqlLogs, CoreNo, UserName, DateTime.Now, WorkPoint, num);
cmd.CommandText = sqlLogs;
numInfo = cmd.ExecuteNonQuery();
}
//修改拆分总数量
string updateSql = @"update ICSWareHouseLotInfo set Quantity=(select Quantity from ICSWareHouseLotInfo where LotNo='{1}' and WorkPoint='{2}')-'{0}' where LotNo='{1}' and WorkPoint='{2}'";
updateSql = string.Format(updateSql, numm, lotNo, WorkPoint);
cmd.CommandText = updateSql;
numInfo = cmd.ExecuteNonQuery();
string sqlLog = @"INSERT INTO [dbo].[ICSWareHouseLotInfoLog]
([ID]
,[TransCode]
,[TransSequence]
,[LotNo]
,[InvCode]
,[FromWarehouseCode]
,[FromLocationCode]
,[ToWarehouseCode]
,[ToLocationCode]
,[Quantity]
,[Memo]
,[Lock]
,[TransType]
,[BusinessCode]
,[ERPID]
,[ERPDetailID]
,[ERPCode]
,[ERPSequence]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
(select newid(),b.TransCode,b.TransSequence,'{0}',a.InvCode ,a.WarehouseCode,a.LocationCode ,'','',a.Quantity,' ','0','4','15',' ',' ',' ',' ','{1}',e.F_RealName,'{2}','{3}',' '
from ICSWareHouseLotInfo a--主表
left join ICSInventoryLotDetail b on b.LotNo=a.LotNo
left join Sys_SRM_User e on e.F_Account='{1}' and e.F_Location='{3}'
where a.LotNo='{0}' and a.WorkPoint='{3}' )";
sqlLog = string.Format(sqlLog, lotNo, UserName, DateTime.Now, WorkPoint);
cmd.CommandText = sqlLog;
int numLog = cmd.ExecuteNonQuery();
if (numLog > 0)
{
cmd.Transaction.Commit();
}
else
{
cmd.Transaction.Rollback();
}
return null;
}
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();
}
}
/// <summary>
/// 更新
/// </summary>
public string LOTReviseUpdate(LOTReviseUpdateIModel JsonData)
{
List<LOTReviseUpdateIModel> model = new List<LOTReviseUpdateIModel>();
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
int result = 0;
string resultInfo = "数量为0";
cmd.Transaction = sqlTran;
cmd.Connection = conn;
try
{
#region 更新ICSWareHouseInfo表
sql = @"update ICSWareHouseLotInfo
set Quantity=Quantity - {0},MTIME='{1}'
where INVCode='{2}' and WorkPoint='{3}'
update ICSWareHouseLotInfoLog
set Quantity=Quantity + {0},MTIME='{1}'
where INVCode='{2}' and WorkPoint='{4}'";
sql = string.Format(sql, JsonData.Quantityl, DateTime.Now, JsonData.LotNo, JsonData.WorkPoint);
cmd.CommandText = sql;
result = cmd.ExecuteNonQuery();//返回条数
#endregion
if (result > 0)
{
return result.ToString();
}
return resultInfo;
}
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();
}
}
#endregion
#region 盘点
/// <summary>
/// 盘点
/// </summary>
/// <param name="JsonData"></param>
/// <returns></returns>
public List<ICSCheck> LOTCheckGet(List<ICSCheck> JsonData)
{
List<ICSCheck> model = new List<ICSCheck>();
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
int result = 0;
string resultInfo = null;
cmd.Transaction = sqlTran;
cmd.Connection = conn;
try
{
foreach (var item in JsonData)
{
if (item.CheckCode == null)
{
resultInfo = "盘点单号不能为空!";
}
#region 查询该盘点号是否有数据
sql = @"select count(CheckCode) from ICSCheck
where CheckCode={0}";
sql = string.Format(sql, item.CheckCode);
cmd.CommandText = sql;
result = cmd.ExecuteNonQuery();//返回条数
if (result > 0)
{
sql = @"select
a.ID,
a.CheckCode,
a.WHCode,
B.WarehouseName,
a.InvCode,
a.Quantity,
a.ActualQuantity,
a.MUSER,
a.MTIME,
c.id,
c.LotNo,
c.ActualQuantity,
c.Quantity
from ICSCheck a
left join ICSWarehouse b on a.WHCode=B.WarehouseCode and a.WorkPoint=b.WorkPoint
left join ICSCheckDetail c on c.CheckCode=a.CheckCode and c.WorkPoint=a.WorkPoint
where 1=1 and a.CheckCode='{0}'";
sql = string.Format(sql, item.CheckCode, item.MTime, item.User);
table = DBHelper.SQlReturnData(sql, cmd);
string json = JsonConvert.SerializeObject(table);
model = JsonConvert.DeserializeObject<List<ICSCheck>>(json);//<List<WMSSourceDocumentModel>>
cmd.Transaction.Commit();
return model;
}
else
{
resultInfo = "没有数据!";
}
}
#endregion
return null;
}
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();
}
}
/// <summary>
/// 盘点添加
/// </summary>
/// <param name="JsonData"></param>
/// <returns></returns>
public string LOTCheckCreate(List<ICSCheck> infoModel)
{
List<ICSCheck> model = new List<ICSCheck>();
DataTable dt = null;
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
string result = null;
int resultInfo = 0;
int Status = 1;
try
{
//根据条码查询库存数量
foreach (var item in infoModel)
{
foreach (var itemInfo in item.detail)
{
sql = @"select * from ICSWareHouseLotInfo where LotNo='{0}' ";
sql = string.Format(sql, itemInfo.LotNo);
dt = DBHelper.SQlReturnData(sql, cmd);
if (dt.Rows.Count > 0)
{
sql = @"INSERT INTO [dbo].[ICSCheck]
([ID]
,[CheckCode]
,[WHCode]
,[InvCode]
,[Status]
,[Quantity]
,[MUSER]
,[MTIME]
,MUSERName
,[WorkPoint])
VALUES
( NEWID(),
'{0}',
(select WarehouseCode from ICSWareHouseLotInfo where LotNo='{4}' ),
(select InvCode from ICSWareHouseLotInfo where LotNo='{4}'),
'1',
(select Quantity from ICSWareHouseLotInfo where LotNo='{4}'),
'{1}',
'{2}',
'{1}',
'{3}' )";
sql = string.Format(sql, item.CheckCode, item.User, item.MTime, item.WorkPoint, itemInfo.LotNo);
cmd.CommandText = sql;
DBHelper.CmdExecuteNonQuery(sql, cmd, "成功");
resultInfo = cmd.ExecuteNonQuery();//返回条数
sqlInfo = @" INSERT INTO [dbo].[ICSCheckDetail]
([ID]
,[CheckCode]
,[LotNo]
,[Quantity]
,[ActualQuantity]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint])
VALUES(
newid(),'{0}','{1}',
(select Quantity from ICSWareHouseLotInfo where LotNo='{1}'),
'{4}',
'{2}','{2}','{3}')";
sqlInfo = string.Format(sqlInfo, item.CheckCode, itemInfo.LotNo, item.User, item.MTime, itemInfo.ActualQuantity);
cmd.CommandText = sqlInfo;
DBHelper.CmdExecuteNonQuery(sqlInfo, cmd, "成功");
resultInfo = cmd.ExecuteNonQuery();//返回条数
}
else
{
throw new Exception("条码没有查询到数据");
}
}
}
}
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();
}
return resultInfo.ToString();
}
/// <summary>
/// 删除盘点数据
/// </summary>
/// <param name="infoModel"></param>
/// <returns></returns>
public string LOTCheckDelete(List<ICSCheck> infoModel)
{
List<ICSCheck> model = new List<ICSCheck>();
DataTable dt = null;
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
int resultInfo = 0;
try
{
foreach (var item in infoModel)
{
foreach (var itemInfo in item.detail)
{
///先删除主表在删除子表
sql = @"DELETE FROM ICSCheck where CheckCode=(select CheckCode from ICSCheckDetail where LotNo='{0}')
DELETE FROM ICSCheckDetail where LotNo='{0}' and WorkPoint='{1}'";
sql = string.Format(sql, itemInfo.LotNo, item.WorkPoint);
cmd.CommandText = sql;
resultInfo = cmd.ExecuteNonQuery();//返回条数
}
}
}
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();
}
return resultInfo.ToString();
}
#endregion
#region 审核
/// <summary>
/// 审核
/// </summary>
/// <param name="infoModel"></param>
/// <returns></returns>
public string MOIssueDocNegativeApplyApprove(List<ICSMOApplyNeg> infoModel)
{
List<ICSMOApplyNeg> model = new List<ICSMOApplyNeg>();
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
int resultInfo = 0;
string num = "审核成功!";
try
{
foreach (var item in infoModel)
{
foreach (var itemInfo in item.detail)
{
//先查询是否已经审核过
sql = @"select * from ICSMOApplyNeg where status='2' and id='{0}' and WorkPoint='{1}'";
sql = string.Format(sql, item.ID, itemInfo.WorkPoint);
DataTable dataTable = DBHelper.SQlReturnData(sql, cmd);
if (dataTable.Rows.Count > 0)
{
throw new Exception("已经审核过,请重复审核");
}
else
{
string sqlInfo = @"update ICSMOApplyNeg set status ='1' where id='{0}' and WorkPoint='{1}'";
sqlInfo = string.Format(sqlInfo, item.ID, itemInfo.WorkPoint);
DataTable data = DBHelper.SQlReturnData(sqlInfo, cmd);
if (data.Rows.Count > 0)
{
return num;
}
}
}
}
}
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();
}
return num;
}
#endregion
#region 生产退料
/// <summary>
/// 查询
/// </summary>
/// <param name="infoModel"></param>
/// <returns></returns>
public List<ICSMOApplyNeg> MOIssueDocNegativeApplyGet(ICSMOApplyNeg infoModel)
{
List<ICSMOApplyNeg> model = new List<ICSMOApplyNeg>();
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
int resultInfo = 0;
try
{
sql = @"select
a.id,
a.ApplyNegCode,
c.WarehouseCode,
c.WarehouseName,
a.MUSER,
a.MUSERName,
a.MTIME,
a.WorkPoint,
a.Sequence,
a.InvCode,
a.Quantity,
a.Amount,
a.SourceDetailID,
b.ID
from ICSMOApplyNegDetail a
left join ICSMOApplyNeg b on b.ApplyNegCode = a.ApplyNegCode and a.WorkPoint=b.WorkPoint
left join ICSWarehouse c on b.WHCode = c.WarehouseCode and b.WorkPoint=c.WorkPoint
where a.ApplyNegCode='{0}' and a.MUSER='{1}' and a.MTIME='{2}'";
sql = string.Format(sql, infoModel.MOApplyNegCode, infoModel.User, infoModel.MTime);
table = DBHelper.SQlReturnData(sql, cmd);
string json = JsonConvert.SerializeObject(table);
model = JsonConvert.DeserializeObject<List<ICSMOApplyNeg>>(json);//<List<WMSSourceDocumentModel>>
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();
}
return model;
}
/// <summary>
/// 添加
/// </summary>
/// <param name="infoModel"></param>
/// <returns></returns>
public string MOIssueDocNegativeApplyCreate(List<ICSMOApplyNeg> infoModel)
{
List<ICSMOApplyNeg> model = new List<ICSMOApplyNeg>();
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
int resultInfo = 0;
int resultInfowater = 0;
string Pre;
string water = "001";
try
{
Random Rdm = new Random();
foreach (var item in infoModel)
{
foreach (var itemInfo in item.detail)
{
string Date = DateTime.Now.ToString("yy");
Pre = "MOISSUENEGAPPLY" + item.WHCode + Rdm.Next(0, 100) + Date;
Pre += 1;
sql = @"INSERT INTO ICSMOApplyNeg ([ID],[ApplyNegCode],[WHCode],[Status],[MUSER],[MTIME],[WorkPoint],type,CreatePerson,MUSERName,CreateDateTime)
VALUES (newid(),'{0}','{1}','新建','{2}','{3}','{4}','生产','{2}','{2}','{3}')";
sql = string.Format(sql, Pre, item.WHCode, item.User, item.MTime, itemInfo.WorkPoint);
cmd.CommandText = sql;
resultInfo = cmd.ExecuteNonQuery();//返回条数
//cmd.Transaction.Commit();
if (resultInfo <= 0)
{
throw new Exception("添加主表失败");
}
sqlInfo = @" INSERT INTO ICSMOApplyNegDetail ([ID],[ApplyNegCode],[Sequence],[SourceDetailID],[InvCode],[Quantity],[Amount],[ExtensionID],[MUSER],MUSERName,[MTIME],[WorkPoint],[EATTRIBUTE])
VALUES( newid(),'{0}','{1}','{2}','{3}',{4},{5},'0','{6}','{6}','{7}','{8}','0') ";
if (itemInfo.Amount == "")
{
itemInfo.Amount = "0";
}
sqlInfo = string.Format(sqlInfo, Pre, itemInfo.Sequence, itemInfo.SourceDetailID, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, item.User, item.MTime, itemInfo.WorkPoint);
cmd.CommandText = sqlInfo;
resultInfo = cmd.ExecuteNonQuery();//返回条数
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();
}
return resultInfo.ToString();
}
/// <summary>
/// 修改
/// </summary>
/// <param name="infoModel"></param>
/// <returns></returns>
public int MOIssueDocNegativeApplyUpdate(List<ICSMOApplyNeg> infoModel)
{
List<ICSMOApplyNeg> model = new List<ICSMOApplyNeg>();
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
int resultInfo = 0;
int ApplyNeg = 0;
string Pre;
try
{
foreach (var item in infoModel)
{
foreach (var itemInfo in item.detail)
{
//当id不为空的时候执行修改,当id为空的时候执行添加
sql = @"select * from ICSMOApplyNeg where id='{0}' and WorkPoint='{1}'";
sql = string.Format(sql, item.ID, itemInfo.WorkPoint);
cmd.CommandText = sql;
cmd.Transaction.Commit();
resultInfo = cmd.ExecuteNonQuery();
if (resultInfo > 0)
{
sql = @"update ICSMOApplyNeg set WHCode='{0}',MUSER='{1}' ,MUSERName='{2}' where id='{3}' and WorkPoint='{4}'";
sql = string.Format(sql, item.WHCode, item.User, item.MTime, item.ID, itemInfo.WorkPoint);
cmd.CommandText = sql;
ApplyNeg = cmd.ExecuteNonQuery();
cmd.Transaction.Commit();
if (ApplyNeg > 0)
{
//修改子表
sqlInfo = @"update ICSMOApplyNegDetail set InvCode='{0}' Quantity={1} Amount={2} where id='{3}' and WorkPoint='{4}'";
if (itemInfo.Amount == "")
{
itemInfo.Amount = "0";
}
sql = string.Format(sql, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, itemInfo.DetailID, itemInfo.WorkPoint);
cmd.CommandText = sql;
ApplyNeg = cmd.ExecuteNonQuery();
cmd.Transaction.Commit();
}
}
else
{
MOIssueDocNegativeApplyCreate(infoModel);
}
}
}
return ApplyNeg + resultInfo;
}
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();
}
}
/// <summary>
/// 删除
/// </summary>
/// <param name="infoModel"></param>
/// <returns></returns>
public int MOIssueDocNegativeApplyDelete(List<ICSMOApplyNeg> infoModel)
{
List<ICSMOApplyNeg> model = new List<ICSMOApplyNeg>();
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
int resultInfo = 0;
try
{
foreach (var item in infoModel)
{
foreach (var itemInfo in item.detail)
{
//删除子表
sql = @"delete ICSMOApplyNegDetail where ID='{0}' and WorkPoint='{1}'";
sql = string.Format(sql, itemInfo.DetailID, itemInfo.WorkPoint);
cmd.CommandText = sql;
cmd.Transaction.Commit();
resultInfo = cmd.ExecuteNonQuery();//返回条数
if (resultInfo <= 0)
{
throw new Exception("删除失败");
}
sqlInfo = @"delete ICSMOApplyNeg where ID='{0}'and WorkPoint='{1}'";
sqlInfo = string.Format(sqlInfo, item.ID, itemInfo.WorkPoint);
cmd.CommandText = sqlInfo;
resultInfo = cmd.ExecuteNonQuery();//返回条数
}
}
}
catch (Exception ex)
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
conn.Dispose();
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
conn.Dispose();
}
return resultInfo;
}
#endregion
#region 采购到货单/拒收
/// <summary>
/// 到货单添加
/// </summary>
/// <param name="infoModel"></param>
/// <returns></returns>
public string DeliveryNoticeCreate(List<ICSDeliveryNotice> infoModel, string DNType)
{
DataTable dt = null;
DataTable dtInfo = null;
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
int num = 0;
int numInfo = 0;
string sqlDetail;
string json;
double numtable = 0;
double numASN = 0;
///ERP
string sqlERP = string.Empty;//ERP的表头
string sqlERPDetil = string.Empty;//ERP的表体
string jsonERP = string.Empty;///erpjson
string IstrErp = string.Empty;
string iresult = string.Empty;//接口调用
string ASNCode = string.Empty;
string WorkPoint = string.Empty;
string Sequences = string.Empty;
try
{
if (infoModel.Count <= 0)
{
throw new Exception("传送数据为空!");
}
List<ICSDeliveryNotice> model = new List<ICSDeliveryNotice>();
foreach (var item in infoModel)
{
ASNCode = item.ASNCode;
WorkPoint = item.WorkPoint;
string Pre;
int i = 0;
Random Rdm = new Random();
int iRdm = Rdm.Next(0, 100);
if (DNType == "到货")
{
string Date = DateTime.Now.ToString("yy");
Pre = "DN" + item.VenCode + iRdm + Date;
if (!string.IsNullOrEmpty(item.ASNCode))
{
sql = @"select * from ICSASN a inner join ICSASNDetail b on a.ASNCode=b.ASNCode where a.ASNCode='{0}' and a.Status='2' and a.WorkPoint='{1}'";
sql = string.Format(sql, item.ASNCode, item.WorkPoint);
table = DBHelper.SQlReturnData(sql, cmd);
}
else
{
throw new Exception("送货单号为空!");
}
#region 验证送货单数据是否存在
//是否送货单是否存在是否已经审核
if (table.Rows.Count <= 0)
{
throw new Exception("该送货单单没有审核或没有该单据请核对!");
}
#endregion
#region 验证送货单数据是否存在
//是否送货单是否存在是否已经审核
else
{
#region 修改子表的信息
foreach (var itemInfo in item.detail)
{
//WorkPoint = itemInfo.WorkPoint;
Sequences = itemInfo.Sequence;
///修改送货单子表信息
sqlDetail = @" update ICSASNDetail set DNQuantity='{2}' where ASNCode='{0}' and WorkPoint='{1}' and LotNo='{3}'";
sqlDetail = string.Format(sqlDetail, item.ASNCode, item.WorkPoint, itemInfo.Quantity, itemInfo.LotNo);
//DBHelper.CmdExecuteNonQuery(sqlDetail, cmd, "成功");
cmd.CommandText = sqlDetail;
int numInfoL = cmd.ExecuteNonQuery();
#endregion
#region Add到货单
string sqlnum = @"select * from ICSDeliveryNotice where WorkPoint='{0}' and ASNCode='{1}' and DNType='1' ";
sqlnum = string.Format(sqlnum, item.WorkPoint, item.ASNCode);
DataTable data = DBHelper.SQlReturnData(sqlnum, cmd);
if (data.Rows.Count > 0)
{
throw new Exception("已到货,不能重复到货!");
}
else
{
string sqlasn = @"select isnull(Quantity,0) as Quantity from ICSASN a inner join ICSASNDetail b on a.ASNCode=b.ASNCode where b.LotNo='{0}' and a.Status='2' and a.WorkPoint='{1}'";
sqlasn = string.Format(sqlasn, itemInfo.LotNo, item.WorkPoint);
DataTable dasn = DBHelper.SQlReturnData(sqlasn, cmd);
numASN = Convert.ToDouble(dasn.Rows[0][0]);
if (Convert.ToDouble(itemInfo.Quantity) > numASN)
{
throw new Exception("到货数量大于送货数量,请查看数量!");
}
}
}
//添加到到货单新数据
sqlInfo = @"INSERT INTO [ICSDeliveryNotice]
([ID]
,[DNCode]
,[Sequence]
,[VenCode]
,[DepCode]
,[DNType]
,[InvCode]
,[Quantity]
,[Amount]
,[RCVQuantity]
,[UnitPrice]
,[Currency]
,[Status]
,[CreatePerson]
,[CreateDateTime]
,[POID]
,[PODetailID]
,[DNID]
,[DNDetailID]
,[ExtensionID]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1]
,[ASNCode])
(SELECT NEWID(),'{0}',row_number() OVER (ORDER BY b.InvCode),d.VenCode,d.DepCode,'1',b.InvCode,SUM(a.DNQuantity),'0','0',d.UnitPrice,d.Currency,'2'
,'{1}',GETDATE(),d.POID,d.PODetailID,'0','0',b.ExtensionID,'{1}',e.F_RealName,GETDATE(),'{2}','',a.ASNCode
FROM ICSASNDetail a
INNER JOIN ICSInventoryLot b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
INNER JOIN ICSInventoryLotDetail c ON b.LotNo=c.LotNo AND b.WorkPoint=c.WorkPoint
INNER JOIN ICSPurchaseOrder d ON c.TransCode=d.POCode AND c.TransSequence=d.Sequence AND c.WorkPoint=d.WorkPoint
INNER JOIN Sys_SRM_User e ON e.F_Account='{1}' AND e.F_Location='{2}'
WHERE a.ASNCode='{3}' AND a.WorkPoint='{2}'
GROUP BY d.POID,d.PODetailID,d.VenCode,d.UnitPrice,d.Currency,d.DepCode,b.ExtensionID,b.InvCode,a.ASNCode,e.F_RealName)";
sqlInfo = string.Format(sqlInfo, Pre, item.User, item.WorkPoint, item.ASNCode);
cmd.CommandText = sqlInfo;
num = cmd.ExecuteNonQuery();
#endregion
}
#endregion
}
else
{
///拒收
Random RdmInfo = new Random();
int iRdmInfo = Rdm.Next(0, 100);
string Date = DateTime.Now.ToString("yy");
Pre = "RJT" + item.VenCode + iRdmInfo + Date;
if (!string.IsNullOrEmpty(item.DNCode))
{
sql = @"select count(DNCode) from ICSDeliveryNotice where DNCode='{0}' and Status='2' and DNType='1' and WorkPoint='{1}'";
sql = string.Format(sql, item.DNCode, item.WorkPoint);
table = DBHelper.SQlReturnData(sql, cmd);
}
else
{
throw new Exception("送货单号为空!");
}
#region 验证送货单数据是否存在
//是否送货单是否存在是否已经审核
if (table.Rows.Count > 0)
{
#region Add拒收单
foreach (var itemInfo in item.detail)
{
int Sequence = i++;
//添加拒收新数据
sqlInfo = @" IF EXISTS(
select EATTRIBUTE1 from ICSDeliveryNotice
where EATTRIBUTE1 = '{14}' and DNType = '3' and WorkPoint = '{13}')
RAISERROR('条码:{14},该条码已拒收!', 16, 1)
INSERT INTO [ICSDeliveryNotice]
([ID]
,[DNCode]
,[Sequence]
,[VenCode]
,[DepCode]
,[DNType]
,[InvCode]
,[Quantity]
,[Amount]
,[RCVQuantity]
,[UnitPrice]
,[Currency]
,[Status]
,[CreatePerson]
,[CreateDateTime]
,[POID]
,[PODetailID]
,[DNID]
,[DNDetailID]
,[ExtensionID]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1]
,[ASNCode])
select newid(),'{0}', '{1}', '{2}', '{3}', '3', '{4}', '{5}', '{6}', 0, '{7}', '{8}' , '2', '{9}', '{10}', '{11}', '{12}', '0','0', b.ExtensionID, '{9}',a.F_RealName, '{10}', '{13}', '{14} ',' '
from Sys_SRM_User a
left join ICSDeliveryNotice b on b.DNCode='{15}'and b.DNType=1
where F_Account='{9}' and F_Location='{13}' ";
if (itemInfo.Amount == "")
{
int numInfoList = 0;
sqlInfo = string.Format(sqlInfo, Pre, Sequence, item.VenCode, item.DepCode, itemInfo.InvCode, itemInfo.Quantity, numInfoList, itemInfo.UnitPrice, itemInfo.Currency, item.User, DateTime.Now, item.ID, itemInfo.DNDetailID, itemInfo.WorkPoint, itemInfo.LotNo, item.DNCode);
cmd.CommandText = sqlInfo;
}
// DBHelper.CmdExecuteNonQuery(sqlInfo, cmd, "成功");
num = cmd.ExecuteNonQuery();
}
#endregion
}
else
{
throw new Exception("该送货单单没有审核或没有该单据请核对!");
}
#endregion
}
}
if (num > 0)
{
string numm = "成功";
#region ERP
sqlERP = @"select VenCode,DepCode,POID,MUSER,(getdate())as Mtime from ICSDeliveryNotice
where ASNCode='{0}' and WorkPoint='{1}' ";
sqlERP = string.Format(sqlERP, ASNCode, WorkPoint);
table = DBHelper.SQlReturnData(sqlERP, cmd);
sqlERPDetil = @"select Sequence,InvCode,Quantity,Amount,UnitPrice,Currency,PODetailID, cFree1,cFree2,cFree3,cFree4,cFree5,cFree6,cFree7,cFree8,cFree9,cFree10 from ICSDeliveryNotice A
LEFT JOIN ICSExtension B ON A.ASNCode=B.ID where A.ASNCode='{0}' and A.WorkPoint='{1}' ";
sqlERPDetil = string.Format(sqlERPDetil, ASNCode, WorkPoint);
DataTable ERPtable = DBHelper.SQlReturnData(sqlERPDetil, cmd);
List<ERPDeliveryNotice> docmodel = new List<ERPDeliveryNotice>();
foreach (DataRow dtIn in table.Rows)
{
ERPDeliveryNotice doc = new ERPDeliveryNotice();
doc.VenCode = dtIn["VenCode"].ToString();
doc.DepCode = dtIn["DepCode"].ToString();
doc.POCode = dtIn["POID"].ToString();
doc.User = dtIn["MUSER"].ToString();
doc.MTime = dtIn["Mtime"].ToString();
List<ERPDeliveryNoticeList> list = new List<ERPDeliveryNoticeList>();
foreach (DataRow dtList in ERPtable.Rows)
{
ERPDeliveryNoticeList docc = new ERPDeliveryNoticeList();
docc.Sequence = dtList["Sequence"].ToString();
docc.InvCode = dtList["InvCode"].ToString();
docc.Quantity = dtList["Quantity"].ToString();
docc.Amount = dtList["Amount"].ToString();
docc.Currency = dtList["Currency"].ToString();
docc.UnitPrice = dtList["UnitPrice"].ToString();
docc.PODetailID = dtList["PODetailID"].ToString();
docc.cFree1 = dtList["cFree1"].ToString();
docc.cFree2 = dtList["cFree2"].ToString();
docc.cFree3 = dtList["cFree3"].ToString();
docc.cFree4 = dtList["cFree4"].ToString();
docc.cFree5 = dtList["cFree5"].ToString();
docc.cFree6 = dtList["cFree6"].ToString();
docc.cFree7 = dtList["cFree7"].ToString();
docc.cFree8 = dtList["cFree8"].ToString();
docc.cFree9 = dtList["cFree9"].ToString();
docc.cFree10 = dtList["cFree10"].ToString();
list.Add(docc);
}
doc.details = list;
docmodel.Add(doc);
}
IstrErp = JsonConvert.SerializeObject(docmodel);
iresult = HttpPost("采购到货", ERPUrl.CreatePOArrivURL, IstrErp);
Result OtherOutResult = new Result();
OtherOutResult = JsonConvert.DeserializeObject<Result>(iresult);
if (OtherOutResult.Success == false)
{
throw new Exception(OtherOutResult.Message);
}
else
{
List<ERPJsonRetun> list = new List<ERPJsonRetun>();
//string nn = OtherOutResult.Data.ToString();//LOTStockModel
list = JsonConvert.DeserializeObject<List<ERPJsonRetun>>(OtherOutResult.Data.ToString());
foreach (var items in list)
{
string ERPupdate = @"update ICSDeliveryNotice set DNCode='{0}',Sequence='{1}',DNID='{2}',DNDetailID='{3}',DNType='1'
where ASNCode='{4}' and Sequence ='{5}'";
ERPupdate = string.Format(ERPupdate, items.DNCode, items.Sequence, items.ID, items.DetailID, ASNCode, Sequences);
cmd.CommandText = ERPupdate;
num = cmd.ExecuteNonQuery();
}
}
#endregion
cmd.Transaction.Commit();
//提交成功之后传ERP
return numm;
}
else
{
cmd.Transaction.Rollback();
}
return null;
}
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();
}
}
/// <summary>
/// 到货单查询
/// </summary>
/// <param name="infoModel"></param>
/// <returns></returns>
public string DeliveryNoticeGet(List<ICSDeliveryNotice> infoModel, string DNType)
{
DataTable dt = null;
DataTable dtInfo = null;
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
int num = 0;
int numInfo = 0;
string sqlDetail;
string json;
try
{
return null;
}
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();
}
}
#endregion
#region 委外到货/拒收
public string DeliveryNoticeODNCreate(List<ICSDeliveryNotice> infoModel, string DNType)
{
Random Rdm = new Random();
int iRdm = Rdm.Next(0, 100);
DataTable dt = null;
DataTable dtInfo = null;
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
int num = 0;
int numInfo = 0;
string sqlDetail;
string json;
string TYPE;
try
{
if (infoModel.Count <= 0)
{
throw new Exception("传送数据为空!");
}
List<ICSDeliveryNotice> model = new List<ICSDeliveryNotice>();
int i = 1;
foreach (var item in infoModel)
{
string Pre;
if (DNType == "到货")
{
string Date = DateTime.Now.ToString("yy");
Pre = "ODN" + item.VenCode + iRdm + Date;
TYPE = "1";
#region 验证送货单数据是否存在
if (!string.IsNullOrEmpty(item.ASNCode))
{
sql = @"select * from ICSOASN where OASNCode='{0}' and Status='2' and WorkPoint='{1}'";
sql = string.Format(sql, item.ASNCode, item.WorkPoint);
table = DBHelper.SQlReturnData(sql, cmd);
}
else
{
return json = "委外送货单号为空!";
}
// 是否送货单是否存在是否已经审核
if (table.Rows.Count <= 0)
{
return json = "该送货单单没有审核或没有该单据请核对!";
}
#endregion
#region Add到货单
foreach (var itemInfo in item.detail)
{
//添加到到货单新数据
sqlInfo = @"INSERT INTO [ICSODeliveryNotice]
([ID]
,[ODNCode]
,[Sequence]
,[VenCode]
,[DepCode]
,[ODNType]
,[InvCode]
,[Quantity]
,[Amount]
,[RCVQuantity]
,[UnitPrice]
,[Currency]
,[Status]
,[CreatePerson]
,[CreateDateTime]
,[POID]
,[PODetailID]
,[ODNID]
,[ODNDetailID]
,[ExtensionID]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1]
)
(SELECT NEWID(),'{0}',row_number() OVER (ORDER BY b.InvCode),d.VenCode,d.DepCode,'1',b.InvCode,SUM(a.ODNQuantity),'0','0',d.UnitPrice,d.Currency,'2'
,'{1}',GETDATE(),d.POID,d.PODetailID,newid(),newid(),b.ExtensionID,'{1}',e.F_RealName,GETDATE(),'{2}','',a.OASNCode
FROM ICSOASNDetail a
INNER JOIN ICSInventoryLot b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
INNER JOIN ICSInventoryLotDetail c ON b.LotNo=c.LotNo AND b.WorkPoint=c.WorkPoint
INNER JOIN ICSPurchaseOrder d ON c.TransCode=d.POCode AND c.TransSequence=d.Sequence AND c.WorkPoint=d.WorkPoint
INNER JOIN Sys_SRM_User e ON e.F_Account='{1}' AND e.F_Location='{2}'
WHERE a.OASNCode='{3}' AND a.WorkPoint='{2}'
GROUP BY d.POID,d.PODetailID,d.VenCode,d.UnitPrice,d.Currency,d.DepCode,b.ExtensionID,b.InvCode,a.OASNCode,e.F_RealName)";
if (itemInfo.RCVQuantity == null)
{
int VQuantity = 0;
int Price = 0;
sqlInfo = string.Format(sqlInfo, Pre, item.User, item.WorkPoint, item.OASNCode);
//sqlInfo = string.Format(sqlInfo, Pre, itemInfo.Sequence, item.VenCode, item.DepCode, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, VQuantity, Price, itemInfo.Currency, item.User, item.MTime, itemInfo.PODetailID, itemInfo.LotNo, item.WorkPoint, TYPE);
cmd.CommandText = sqlInfo;
}
else
{
sqlInfo = string.Format(sqlInfo, Pre, itemInfo.Sequence, item.VenCode, item.DepCode, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, itemInfo.RCVQuantity, itemInfo.UnitPrice, itemInfo.Currency, item.User, item.MTime, itemInfo.PODetailID, itemInfo.LotNo, item.WorkPoint, TYPE);
cmd.CommandText = sqlInfo;
}
}
num = cmd.ExecuteNonQuery();//返回条数
#endregion
if (num <= 0)
{
return json = "添加失败";
}
else
{
#region 修改子表的信息
foreach (var itemInfo in item.detail)
{
///修改送货单子表信息
sqlDetail = @"
update ICSASNDetail set DNQuantity=((select SUM(DNQuantity) from ICSASNDetail where LotNo='{0}' and WorkPoint='{1}') +(select SUM(Quantity) from ICSDeliveryNotice where DNCode='{2}' and DNType='2' and WorkPoint='{1}' ))
where LotNo='{0}' and WorkPoint='{1}'";
sqlDetail = string.Format(sqlDetail, itemInfo.LotNo, item.WorkPoint, Pre);
cmd.CommandText = sqlDetail;
numInfo = cmd.ExecuteNonQuery();//返回条数
}
if (numInfo <= 0)
{
return json = "修改送货单失败";
}
#endregion
}
}
else
{
///拒收
Random RdmInfo = new Random();
int iRdmInfo = Rdm.Next(0, 100);
string Date = DateTime.Now.ToString("yy");
Pre = "ORJT" + item.VenCode + iRdm + Date;
if (!string.IsNullOrEmpty(item.ODNCode))
{
sql = @"select count(ODNCode) from ICSODeliveryNotice where ODNCode='{0}' and Status='2' and ODNType='1' and WorkPoint='{1}'";
sql = string.Format(sql, item.ODNCode, item.WorkPoint);
table = DBHelper.SQlReturnData(sql, cmd);
}
else
{
throw new Exception("到货单不存在!");
}
#region 验证送货单数据是否存在
//是否送货单是否存在是否已经审核
if (table.Rows.Count > 0)
{
#region Add拒收单
foreach (var itemInfo in item.detail)
{
int Sequence = i++;
//添加拒收新数据
sqlInfo = @"IF EXISTS(
select EATTRIBUTE1 from ICSODeliveryNotice
where EATTRIBUTE1 = '{14}' and ODNType = '3' and WorkPoint = '{13}')
RAISERROR('条码:{14},该条码已拒收!', 16, 1)
INSERT INTO [ICSODeliveryNotice]
([ID]
,[ODNCode]
,[Sequence]
,[VenCode]
,[DepCode]
,[ODNType]
,[InvCode]
,[Quantity]
,[Amount]
,[RCVQuantity]
,[UnitPrice]
,[Currency]
,[Status]
,[CreatePerson]
,[CreateDateTime]
,[POID]
,[PODetailID]
,[ODNID]
,[ODNDetailID]
,[ExtensionID]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1]
,[OASNCode])
select newid(),'{0}', '{1}', '{2}', '{3}', '3', '{4}', '{5}', '{6}', 0, '{7}', '{8}' , '2', '{9}', '{10}', '{11}', '{12}', '0', '0', a.ExtensionID, '{9}',c.F_RealName, '{10}', '{13}', '{14} ',' '
from ICSODeliveryNotice a
left join ICSOASNDetail b on a.OASNCode=b.OASNCode
LEFT JOIN Sys_SRM_User c ON c.F_Account='{9}' and c.F_Location='{13}'
where a.odncode='{15}' and B.LOTNO='{14}' ";
if (itemInfo.Amount == "")
{
int numInfoList = 0;
sqlInfo = string.Format(sqlInfo, Pre, Sequence, item.VenCode, item.DepCode, itemInfo.InvCode, itemInfo.Quantity, numInfoList, itemInfo.UnitPrice, itemInfo.Currency, item.User, DateTime.Now, item.ID, itemInfo.ODNDetailID, itemInfo.WorkPoint, itemInfo.LotNo, item.ODNCode);
cmd.CommandText = sqlInfo;
}
// DBHelper.CmdExecuteNonQuery(sqlInfo, cmd, "成功");
num = cmd.ExecuteNonQuery();
}
#endregion
}
else
{
throw new Exception("该送货单单没有审核或没有该单据请核对!");
}
#endregion
}
}
if (num > 0)
{
cmd.Transaction.Commit();
}
else
{
cmd.Transaction.Rollback();
}
return num.ToString();
}
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();
}
}
#endregion
#region 仓库/库位
/// <summary>
/// 仓库/库位
/// </summary>
/// <param name="JsonData"></param>
/// <returns></returns>
public List<ICSLocation> LocationGet(ICSLocation JsonData)
{
List<ICSLocation> model = new List<ICSLocation>();
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
try
{
sqlInfo = @"SELECT
LocationCode,
LocationName ,
WarehouseCode,
WarehouseName
FROM ICSLocation a
left join ICSWarehouse b on a.WHID=b.ID and a.WorkPoint=b.WorkPoint where LocationCode='{0}' and b.Enable='0'";
sqlInfo = string.Format(sqlInfo, JsonData.LocationCode);
table = DBHelper.SQlReturnData(sqlInfo, cmd);
if (table.Rows.Count > 0)
{
throw new Exception("仓库不存在!");
}
else
{
sql = @"SELECT
LocationCode,
LocationName ,
WarehouseCode,
WarehouseName
FROM ICSLocation a
left join ICSWarehouse b on a.WHID=b.ID and a.WorkPoint=b.WorkPoint where LocationCode='{0}' and b.Enable='1'";
sql = string.Format(sql, JsonData.LocationCode);
table = DBHelper.SQlReturnData(sql, cmd);
if (table.Rows.Count <= 0)
{
throw new Exception("仓库未启用,请先启用仓库!");
}
string json = JsonConvert.SerializeObject(table);
model = JsonConvert.DeserializeObject<List<ICSLocation>>(json);//<List<WMSSourceDocumentModel>>
cmd.Transaction.Commit();
return model;
}
}
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();
}
}
#endregion
#region 委外退料 /OutsourcingIssueDoNegativeApply
public ICSOApplyNegModel OutsourcingIssueDoNegativeApplyGet(ICSOApplyNeg JsonData)
{
List<ICSOApplyNegModel> deliveryNotrModel = new List<ICSOApplyNegModel>();
ICSOApplyNegModel model = new ICSOApplyNegModel();
DataTable dt = null;
DataTable dtInfo = null;
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 sqlInfo = string.Empty;
//foreach (var item in deliveryNotrModel)
//{
sql = @"select
a.ID as ID,
a.OApplyNegCode as OApplyNegCode,
a.WHCode as WHCode,
c.WarehouseName as WHName,
a.MUSER as MUSER,
a.MTIME as MTime
from ICSOApplyNeg a
left join ICSWarehouse c on c.WarehouseCode=a.WHCode and a.WorkPoint=b.WorkPoint
where 1=1";
if (!string.IsNullOrWhiteSpace(JsonData.OApplyNegCode))
{
sql += " and a.OApplyNegCode='{0}'";
}
if (!string.IsNullOrWhiteSpace(JsonData.User))
{
sql += " and a.MUSER='{1}'";
}
if (!string.IsNullOrWhiteSpace(JsonData.MTime))
{
sql += " and a.MTIME='{2}'";
}
sql = string.Format(sql, JsonData.OApplyNegCode, JsonData.User, JsonData.MTime);
sqlInfo = @"select
ID as DetailID,
Sequence as Sequence ,
InvCode as InvCode,
Quantity as Quantity,
Amount as Amount,
SourceDetailID as SourceDetailID
from ICSOApplyNegDetail
where OApplyNegCode=(select OApplyNegCode from ICSOApplyNeg where OApplyNegCode='{0}' and WorkPoint='{1}')";
sqlInfo = string.Format(sqlInfo, JsonData.OApplyNegCode, JsonData.WorkPoint);
//}
dt = DBHelper.SQlReturnData(sql, cmd);
dtInfo = DBHelper.SQlReturnData(sqlInfo, cmd);
string json = JsonConvert.SerializeObject(dt);
string jsonInfo = JsonConvert.SerializeObject(dtInfo);
string jsonlist = null;
if (dt.Rows.Count > 0)
{
foreach (DataRow dr in dt.Rows)
{
ICSOApplyNegModel main = new ICSOApplyNegModel();
main.ID = dr["ID"].ToString();
main.OApplyNegCode = dr["OApplyNegCode"].ToString();
main.WHCode = dr["WHCode"].ToString();
main.WHName = dr["WHName"].ToString();
main.User = dr["MUSER"].ToString();
main.MTime = dr["MTime"].ToString();
List<ICSOApplyNegModelInfo> list = new List<ICSOApplyNegModelInfo>();
foreach (DataRow info in dtInfo.Rows)
{
ICSOApplyNegModelInfo detail = new ICSOApplyNegModelInfo();
detail.DetailID = info["DetailID"].ToString();
detail.Sequence = info["Sequence"].ToString();
detail.InvCode = info["InvCode"].ToString();
detail.Quantity = info["Quantity"].ToString();
detail.Amount = info["Amount"].ToString();
detail.SourceDetailID = info["SourceDetailID"].ToString();
list.Add(detail);
}
main.detail = list;
jsonlist = JsonConvert.SerializeObject(main);
}
var deliveryNotrModelInfo = JsonConvert.DeserializeObject<ICSOApplyNegModel>(jsonlist);
cmd.Transaction.Commit();
return deliveryNotrModelInfo;
}
else
{
throw new Exception("数据为空");
}
}
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();
}
}
/// <summary>
/// 委外退料 新建
/// </summary>
/// <param name="JsonData"></param>
/// <returns></returns>
public int OutsourcingIssueDoNegativeApplyCreate(List<ICSOApplyNeg> JsonData)
{
Random Rdm = new Random();
int iRdm = Rdm.Next(0, 100);
List<ICSOApplyNegModel> deliveryNotrModel = new List<ICSOApplyNegModel>();
ICSOApplyNegModel model = new ICSOApplyNegModel();
SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
int num = 0;
int numInfo = 0;
try
{
string sql = string.Empty;
string sqlInfo = string.Empty;
string Pre = "";
foreach (var item in JsonData)
{
foreach (var itemInfo in item.detail)
{
//主表新建数据
string Date = DateTime.Now.ToString("yy");
Pre = "OOISSUENEGAPPLY" + item.WHCode + iRdm + Date;//新的委外退料申请号
sql = @"INSERT INTO ICSOApplyNeg
([ID]
,[OApplyNegCode]
,[WHCode]
,[Status]
,[Type]
,[Memo]
,[CreatePerson]
,[CreateDateTime]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
VALUES
(newid(),'{0}','{1}','开立','委外',' ','{2}','{3}','{2}','{2}','{3}','{4}',' ')";
sql = string.Format(sql, Pre, item.WHCode, item.User, item.MTime, itemInfo.WorkPoint);
cmd.CommandText = sql;
//cmd.Transaction.Commit();
num = cmd.ExecuteNonQuery();//返回条数
sqlInfo = @"INSERT INTO [ICSOApplyNegDetail]
([ID]
,[OApplyNegCode]
,[Sequence]
,[SourceDetailID]
,[InvCode]
,[Quantity]
,[Amount]
,[IssueNegQuantity]
,[ExtensionID]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE])
VALUES
(newid(),'{0}'
,'{1}','{2}','{3}',{4},{5},0,'','{6}','{6}','{7}','{8}','')";
sqlInfo = string.Format(sqlInfo, Pre, itemInfo.Sequence, itemInfo.SourceDetailID, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, item.User, item.MTime, itemInfo.WorkPoint);
cmd.CommandText = sqlInfo;
//cmd.Transaction.Commit();
numInfo = cmd.ExecuteNonQuery();//返回条数
}
cmd.Transaction.Commit();
}
if (num > 0 && numInfo > 0)
{
return num + numInfo;
}
return num;
}
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();
}
}
/// <summary>
/// 委外退料 修改
/// </summary>
/// <param name="JsonData"></param>
/// <returns></returns>
public int OutsourcingIssueDoNegativeApplyUpdate(List<ICSOApplyNeg> JsonData)
{
List<ICSOApplyNegModel> deliveryNotrModel = new List<ICSOApplyNegModel>();
ICSOApplyNegModel model = new ICSOApplyNegModel();
SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
int num = 0;
int numInfo = 0;
try
{
string sql = string.Empty;
string sqlInfo = string.Empty;
string Pre = "";
foreach (var item in JsonData)
{
//主表修改
sql = @"update ICSOApplyNeg set WHCode='{0}' ,MUSER='{1}',MTIME='{2}'where ID='{3}' and WorkPoint='{4}' ";
sql = string.Format(sql, item.WHCode, item.User, item.MTime, item.id, item.WorkPoint);
cmd.CommandText = sql;
cmd.Transaction.Commit();
num = cmd.ExecuteNonQuery();
foreach (var itemInfo in item.detail)
{
sql = @"update ICSOApplyNegDetail set InvCode='{0}' ,Quantity='{1}',Amount='{2}' where ID='{3}'and SourceDetailID='{4}' and WorkPoint='{5}'";
sql = string.Format(sql, itemInfo.InvCode, itemInfo.Quantity, itemInfo.Amount, itemInfo.DetailID, itemInfo.SourceDetailID, itemInfo.WorkPoint);
cmd.CommandText = sql;
//cmd.Transaction.Commit();
numInfo = cmd.ExecuteNonQuery();
}
}
if (num > 0 && numInfo > 0)
{
return numInfo + num;
}
return num + numInfo;
}
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();
}
}
/// <summary>
/// 委外退料 删除
/// </summary>
/// <param name="JsonData"></param>
/// <returns></returns>
public int OutsourcingIssueDoNegativeApplyDelete(List<ICSOApplyNeg> JsonData)
{
List<ICSOApplyNegModel> deliveryNotrModel = new List<ICSOApplyNegModel>();
ICSOApplyNegModel model = new ICSOApplyNegModel();
SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
int num = 0;
int numInfo = 0;
try
{
string sql = string.Empty;
string sqlInfo = string.Empty;
string Pre = "";
foreach (var item in JsonData)
{
foreach (var itemInfo in item.detail)
{
sqlInfo = @"DELETE FROM ICSOApplyNegDetail where ID='{0}' and WorkPoint='{1}' ";
sqlInfo = string.Format(sqlInfo, itemInfo.DetailID, itemInfo.WorkPoint);
cmd.CommandText = sqlInfo;
cmd.Transaction.Commit();
numInfo = cmd.ExecuteNonQuery();
}
if (numInfo > 0)
{
//主表删除
sql = @"DELETE FROM [ICSOApplyNeg] where ID='{0}' and WorkPoint='{3}'";
if (!string.IsNullOrEmpty(item.User))
{
sql = "and MUSER = '{1}' ";
}
if (!string.IsNullOrEmpty(item.MTime))
{
sql = " and MTIME = '{2}'";
}
sql = string.Format(sql, item.id, item.User, item.MTime, item.WorkPoint);
cmd.CommandText = sql;
// cmd.Transaction.Commit();
num = cmd.ExecuteNonQuery();
}
}
if (num > 0 && numInfo > 0)
{
return numInfo + num;
}
return num + numInfo;
}
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();
}
}
#endregion
#region 库存盘点单
public object CheckGet(ICSCheck JsonData)
{
List<ICSCheck> deliveryNotrModel = new List<ICSCheck>();
ICSCheck model = new ICSCheck();
DataTable dt = null;
DataTable dtInfo = null;
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 sqlInfo = string.Empty;
string sqlList = string.Empty;
//foreach (var item in JsonData)
//{
sqlList = @" select * from ICSCheck where CheckCode='{0}' and WorkPoint='{1}'";
sql = string.Format(sqlList, JsonData.CheckCode, JsonData.WorkPoint);
dt = DBHelper.SQlReturnData(sql, cmd);
if (dt.Rows.Count > 0)
{
sql = @"select
a.ID as ID,
a.CheckCode as CheckCode,
a.WHCode as WHCode,
b.WarehouseName as WHName,
a.InvCode as InvCode,
a.Quantity as Quantity,
a.ActualQuantity as ActualQuantity,
a.MUSER as MUSER,
a.MTIME as MTime
from ICSCheck a
left join ICSWarehouse b on a.WHCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
where 1=1 and Status='2'";
if (!string.IsNullOrWhiteSpace(JsonData.CheckCode))
{
sql += "and a.CheckCode='{0}'";
}
if (!string.IsNullOrWhiteSpace(JsonData.User))
{
sql += " and a.MUSER='{1}'";
}
if (!string.IsNullOrWhiteSpace(JsonData.MTime))
{
sql += " and a.MTIME='{2}'";
}
sql = string.Format(sql, JsonData.CheckCode, JsonData.User, JsonData.MTime);
sqlInfo = @" select
a.ID as DetailID ,
c.TransSequence as Sequence,
a.LotNo as LotNo,
a.Quantity as LotQuantity,
a.ActualQuantity as LotActualQuantity
from ICSCheckDetail a
left join ICSCheck b on a.CheckCode=b.CheckCode and a.WorkPoint=b.WorkPoint
left join ICSInventoryLotDetail c on a.LotNo=c.LotNo and c.WorkPoint=a.WorkPoint
where 1=1 and a.CheckCode='{0}' ";
sqlInfo = string.Format(sqlInfo, JsonData.CheckCode);
//}
dt = DBHelper.SQlReturnData(sql, cmd);
dtInfo = DBHelper.SQlReturnData(sqlInfo, cmd);
//string json = JsonConvert.SerializeObject(dt);
//string jsonInfo = JsonConvert.SerializeObject(dtInfo);
string jsonlist = null;
if (dt.Rows.Count > 0)
{
foreach (DataRow dr in dt.Rows)
{
ICSCheckInfo main = new ICSCheckInfo();
main.ID = dr["ID"].ToString();
main.CheckCode = dr["CheckCode"].ToString();
main.WHCode = dr["WHCode"].ToString();
main.WHName = dr["WHName"].ToString();
main.InvCode = dr["InvCode"].ToString();
main.Quantity = dr["Quantity"].ToString();
main.ActualQuantity = dr["ActualQuantity"].ToString();
main.User = dr["MUSER"].ToString();
main.MTime = dr["MTime"].ToString();
List<ICSCheckInfoModel> list = new List<ICSCheckInfoModel>();
foreach (DataRow info in dtInfo.Rows)
{
ICSCheckInfoModel detail = new ICSCheckInfoModel();
detail.DetailID = info["DetailID"].ToString();
detail.Sequence = info["Sequence"].ToString();
detail.LotNo = info["LotNo"].ToString();
detail.LotQuantity = info["LotQuantity"].ToString();
detail.LotActualQuantity = info["LotActualQuantity"].ToString();
//detail.SourceDetailID = info["SourceDetailID"].ToString();
list.Add(detail);
}
main.detail = list;
jsonlist = JsonConvert.SerializeObject(main);
}
var deliveryNotrModelInfo = JsonConvert.DeserializeObject(jsonlist);
cmd.Transaction.Commit();
return deliveryNotrModelInfo;
}
else
{
throw new Exception("数据未审核,请先审核");
}
}
else
{
throw new Exception("单据不存在");
}
}
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();
}
}
/// <summary>
/// 库存盘点
/// </summary>
/// <param name="JsonData"></param>
/// <returns></returns>
public object CheckCreate(List<ICSCheck> JsonData, string type)
{
List<ICSCheck> deliveryNotrModel = new List<ICSCheck>();
List<ICSCheckInfo> iCs = new List<ICSCheckInfo>();
ICSCheck model = new ICSCheck();
SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
DataTable dt;
int num = 0;
Random Rdm = new Random();
int iRdm = Rdm.Next(0, 100);
try
{
string Pre = "";
string sql = string.Empty;
string sqlInfo = string.Empty;
foreach (var item in JsonData)
{
foreach (var itemInfo in item.detail)
{
if (type == "库存盘点")
{
string Date = DateTime.Now.ToString("yy");
Pre = "CHK" + itemInfo.WHCode + iRdm + Date;//库存盘点单号
sqlInfo = @"select * from ICSWarehouse a
left join ICSWareHouseLotInfo b on a.WarehouseCode=b.WarehouseCode and a.WorkPoint=b.WorkPoint
where a.Enable=1 and a.WarehouseCode='{0}' and a.WorkPoint='{1}'";
sqlInfo = string.Format(sqlInfo, itemInfo.WHCode, itemInfo.WorkPoint);
cmd.CommandText = sqlInfo;
dt = DBHelper.SQlReturnData(sqlInfo, cmd);
if (dt.Rows.Count > 0)
{
sql = @"INSERT INTO [ICSCheck]
([ID]
,[CheckCode]
,[WHCode]
,[InvCode]
,[Status]
,[Quantity]
,[MUSER]
,[MTIME]
,MUSERName
,[WorkPoint])
(SELECT newid(),'{0}','{1}',a.InvCode,'1',SUM(a.Quantity),'{2}','{3}',b.F_RealName,'{4}'
FROM ICSWareHouseLotInfo a
INNER JOIN Sys_SRM_User b ON b.F_Account='{2}' AND b.F_Location='{4}'
where WarehouseCode='{1}' and WorkPoint='{4}'
GROUP BY InvCode ,b.F_RealName)";
sql = string.Format(sql, Pre, itemInfo.WHCode, item.User, DateTime.Now, itemInfo.WorkPoint);
cmd.CommandText = sql;
num = cmd.ExecuteNonQuery();//返回条数
if (num > 0)
{
string sqlCheck = @"select * from ICSCheck where CheckCode='{0}' and WorkPoint='{1}'";
sqlCheck = string.Format(sqlCheck, Pre, itemInfo.WorkPoint);
DataTable data = DBHelper.SQlReturnData(sqlCheck, cmd);
string json = JsonConvert.SerializeObject(data);
iCs = JsonConvert.DeserializeObject<List<ICSCheckInfo>>(json);
//List<ICSCheckInfo> docmodel = new List<ICSCheckInfo>();
//foreach (DataRow row in data.Rows)
//{
// ICSCheckInfo doc = new ICSCheckInfo();
// doc.ID = row["ID"].ToString();
// doc.CheckCode = row["CheckCode"].ToString();
// doc.WHCode = row["WHCode"].ToString();
// doc.WHName = "";
// doc.InvCode = row["InvCode"].ToString();
// doc.Quantity = row["Quantity"].ToString();
// doc.ActualQuantity = row["ActualQuantity"].ToString();
// doc.User = row["User"].ToString();
// doc.MTime = row["MTime"].ToString();
// docmodel.Add(doc);
//}
//List<ICSCheckInfoModel> list = new List<ICSCheckInfoModel>();
//foreach (DataRow dtList in ERPtable.Rows)
//{
// IssueDocList docc = new IssueDocList();
// docc.Sequence = dtList["TransSequence"].ToString();
// docc.InvCode = dtList["InvCode"].ToString();
// docc.Quantity = dtList["Quantity"].ToString();
// docc.Amount = dtList["Amount"].ToString();
// docc.SourceDetailID = dtList["PickID"].ToString();
// list.Add(docc);
//}
cmd.Transaction.Commit();
}
else
{
cmd.Transaction.Rollback();
}
}
else
{
throw new Exception("仓库未启用或仓库不存在!");
}
}
else if (type == "条码库存")
{
string Date = DateTime.Now.ToString("yy");
Pre = "LOTCHKdsk" + item.WHCode + Date;//条码盘点
sqlInfo = @"select * from ICSWarehouse a
left join ICSWareHouseLotInfo b on a.WarehouseCode=b.WarehouseCode
where a.Enable=1 and b.LotNo='{0}' and WorkPoint='{1}'";
sqlInfo = string.Format(sqlInfo, itemInfo.WHCode, item.WorkPoint);
DataTable dtInfo = DBHelper.SQlReturnData(sqlInfo, cmd);
if (dtInfo.Rows.Count > 0)
{
sql = @"INSERT INTO [ICSCheckDetail]
([ID]
,[CheckCode]
,[LotNo]
,[Quantity]
,[ActualQuantity]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint])
VALUES
(newid(),'{0}','{1}', (select Quantity from ICSWareHouseLotInfo where LotNo='{1}' and WorkPoint='{4}' ),
(select Quantity from ICSWareHouseLotInfo where LotNo='{1}' and WorkPoint='{4}' ),'{2}','{2}','{3}','{4}' )";
sql = string.Format(sql, Pre, itemInfo.WHCode, item.User, item.MTime, item.WorkPoint);
cmd.CommandText = sql;
num = cmd.ExecuteNonQuery();//返回条数
if (num > 0)
{
cmd.Transaction.Commit();
}
else
{
cmd.Transaction.Rollback();
}
}
else
{
throw new Exception("仓库未启用或仓库不存在!");
}
}
}
}
return iCs;
}
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();
}
}
/// <summary>
/// 盘点单审核
/// </summary>
/// <param name="JsonData"></param>
/// <returns></returns>
public bool CreateApprove(ICSCheck JsonData)
{
SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
DataTable dt;
int num = 0;
Random Rdm = new Random();
int iRdm = Rdm.Next(0, 100);
try
{
sql = @"select * from ICSCheck where CheckCode='{0}' and WorkPoint='{1}' ";
sql = string.Format(sql, JsonData.CheckCode, JsonData.WorkPoint);
dt = DBHelper.SQlReturnData(sql, cmd);
if (dt.Rows.Count <= 0)
{
throw new Exception("盘点单不存在!");
}
else
{
string sqlInfo = @"upadte ICSCheck set Status='2' ,MUSER ='{2}', MUSERName=(select F_RealName from Sys_SRM_User where F_Account ='{2}' and F_Location='{1}' ) , MTIME='{3}' where CheckCode='{0}' and WorkPoint='{1}'";
sqlInfo = string.Format(sqlInfo, JsonData.CheckCode, JsonData.WorkPoint, JsonData.User, DateTime.Now);
cmd.CommandText = sql;
num = cmd.ExecuteNonQuery();//返回条数
if (num > 0)
{
cmd.Transaction.Commit();
}
else
{
cmd.Transaction.Rollback();
}
}
return true;
}
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();
}
}
/// <summary>
/// PDA库存盘点
/// </summary>
/// <param name="JsonData"></param>
/// <returns></returns>
public int PDACheckCreate(List<ICSCheck> JsonData, string type)
{
List<ICSCheck> deliveryNotrModel = new List<ICSCheck>();
ICSCheck model = new ICSCheck();
SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
DataTable dt;
int num = 0;
try
{
string Pre = "";
string sql = string.Empty;
string sqlInfo = string.Empty;
foreach (var item in JsonData)
{
foreach (var itemInfo in item.detail)
{
if (item.isChecked == "1")
{
string sqlICSCheck = @"update ICSCheck set Quantity=(select SUM(Quantity) from ICSCheck WHERE InvCode='{5}' AND WHCode='{6}') + '{0}' ,MUSER='{1}'
,MUSERName=(SELECT F_RealName FROM Sys_SRM_User WHERE F_Account='{1}' and F_Location='{3}')
,MTIME='{2}' where WorkPoint='{3}' and CheckCode='{4}' and InvCode='{5}' AND WHCode='{6}'";
sqlICSCheck = string.Format(sqlICSCheck, itemInfo.ActualQuantity, item.User, DateTime.Now, item.WorkPoint, item.CheckCode, item.InvCode, item.WHCode);
cmd.CommandText = sqlICSCheck;
num = cmd.ExecuteNonQuery();
string SQLDetail = @" SELECT * FROM ICSCheckDetail WHERE LotNo='{0}' and WorkPoint='{1}'";
SQLDetail = string.Format(SQLDetail, itemInfo.LotNo, item.WorkPoint);
DataTable data = DBHelper.SQlReturnData(SQLDetail, cmd);
if (data.Rows.Count <= 0)
{
string SQLInertDetail = @"insert into ICSCheckDetail( ID,CheckCode,LotNo,Quantity,ActualQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
(select newid(),'{0}','{1}' ,a.Quantity,'{2}','{3}',b.F_RealName,'{4}','{5}',''
from ICSWareHouseLotInfo a
left join Sys_SRM_User b on F_Account='{3}' and F_Location='{5}'
where a.LotNo='{1}' and a.WorkPoint='{5}')";
SQLInertDetail = string.Format(SQLInertDetail, item.CheckCode, itemInfo.LotNo, itemInfo.ActualQuantity, item.User, DateTime.Now, item.WorkPoint);
cmd.CommandText = SQLInertDetail;
num = cmd.ExecuteNonQuery();
}
else
{
sql = @"update ICSCheckDetail set ActualQuantity=(select ActualQuantity from ICSCheckDetail where CheckCode='{2}' and LotNo='{3}') +'{0}',MUSER='{4}'
,MUSERName=(SELECT F_RealName FROM Sys_SRM_User WHERE F_Account='{4}' and F_Location='{1}')
,MTIME='{5}'
where WorkPoint='{1}' and CheckCode='{2}' and LotNo='{3}'";
sql = string.Format(sql, itemInfo.ActualQuantity, item.WorkPoint, item.CheckCode, itemInfo.LotNo, item.User, DateTime.Now);
cmd.CommandText = sql;
num = cmd.ExecuteNonQuery();
}
string LotInfo = @"update ICSWareHouseLotInfo set Quantity= (select sum(Quantity) from ICSWareHouseLotInfo where LotNo='{3}'and WorkPoint='{4}')+'{0}',MUSER='{1}',
MUSERName=(select F_RealName from Sys_SRM_User where F_Account='{1}' and F_Location='{4}') ,MTIME='{2}' where LotNo='{3}' and WorkPoint='{4}'";
LotInfo = string.Format(LotInfo, itemInfo.ActualQuantity, item.User, DateTime.Now, itemInfo.LotNo, item.WorkPoint);
cmd.CommandText = LotInfo;
num = cmd.ExecuteNonQuery();
string sqlLog = @"INSERT INTO [dbo].[ICSWareHouseLotInfoLog]
([ID]
,[TransCode]
,[TransSequence]
,[LotNo]
,[InvCode]
,[FromWarehouseCode]
,[FromLocationCode]
,[ToWarehouseCode]
,[ToLocationCode]
,[Quantity]
,[Memo]
,[Lock]
,[TransType]
,[BusinessCode]
,[ERPID]
,[ERPDetailID]
,[ERPCode]
,[ERPSequence]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
VALUES
(newid()
,'{5}'
,''
,'{0}'
,'{6}'
,(SELECT WarehouseCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
,(SELECT LocationCode FROM ICSWareHouseLotInfo WHERE LotNo='{0}')
,''
,''
,'{1}'
,''
,''
,'19'
,''
,''
,''
,''
,''
,'{2}'
,(select F_RealName from Sys_SRM_User where F_Account='{2}' and F_Location='{4}')
,'{3}'
,'{4}'
,'')";
sqlLog = string.Format(sqlLog, itemInfo.LotNo, itemInfo.ActualQuantity, item.User, DateTime.Now, item.WorkPoint, item.CheckCode, item.InvCode);
cmd.CommandText = sqlLog;
num = cmd.ExecuteNonQuery();
if (num > 0)
{
cmd.Transaction.Commit();
}
else
{
cmd.Transaction.Rollback();
}
}
else
{
string SQLDetail = @" SELECT * FROM ICSCheckDetail WHERE LotNo='{0}' and WorkPoint='{1}'";
SQLDetail = string.Format(SQLDetail, itemInfo.LotNo, item.WorkPoint);
DataTable data = DBHelper.SQlReturnData(SQLDetail, cmd);
if (data.Rows.Count <= 0)
{
string SQLInertDetail = @"insert into ICSCheckDetail( ID,CheckCode,LotNo,Quantity,ActualQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
(select newid(),'{0}','{1}' ,a.Quantity,'{2}','{3}',b.F_RealName,'{4}','{5}',''
from ICSWareHouseLotInfo a
left join Sys_SRM_User b on F_Account='{3}' and F_Location='{5}'
where a.LotNo='{1}' and a.WorkPoint='{5}')";
SQLInertDetail = string.Format(SQLInertDetail, item.CheckCode, itemInfo.LotNo, itemInfo.ActualQuantity, item.User, DateTime.Now, item.WorkPoint);
cmd.CommandText = SQLInertDetail;
num = cmd.ExecuteNonQuery();
}
else
{
sql = @"update ICSCheckDetail set ActualQuantity=(select ActualQuantity from ICSCheckDetail where CheckCode='{2}' and LotNo='{3}') +'{0}',MUSER='{4}'
,MUSERName=(SELECT F_RealName FROM Sys_SRM_User WHERE F_Account='{4}' and F_Location='{1}')
,MTIME='{5}'
where WorkPoint='{1}' and CheckCode='{2}' and LotNo='{3}'";
sql = string.Format(sql, itemInfo.ActualQuantity, item.WorkPoint, item.CheckCode, itemInfo.LotNo, item.User, DateTime.Now);
cmd.CommandText = sql;
num = cmd.ExecuteNonQuery();
}
if (num > 0)
{
cmd.Transaction.Commit();
}
else
{
cmd.Transaction.Rollback();
}
}
}
}
return num;
}
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();
}
}
#endregion
#region 调拨单
public string TransferDocupdte(TransferDoc JsonData)
{
List<ICSCheck> deliveryNotrModel = new List<ICSCheck>();
ICSCheck model = new ICSCheck();
DataTable dt = null;
DataTable dtInfo = null;
DataTable dtInfoModel = null;
string sqlInsert;
string sqlNum;
SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
int num;
try
{
string sql = string.Empty;
string sqlInfo = string.Empty;
string sqlList = string.Empty;
//验证数量是否大于调拨数量
sql = @"select Quantity from ICSWareHouseLotInfo where LotNo='{0}' and WorkPoint='{1}'";
sql = string.Format(sql, JsonData.Lotno, JsonData.WorkPoint);
dt = DBHelper.SQlReturnData(sql, cmd);
if (dt.Rows.Count <= 0)
{
throw new Exception("查无数据!");
}
foreach (DataRow dr in dt.Rows)
{
TransferDoc main = new TransferDoc();
main.Quantity = Convert.ToInt32(dr["Quantity"]);
if (main.Quantity < JsonData.Quantity)
{
throw new Exception("输入数量小于库存数量不能调拨!");
}
}
///查询调拨的库位是否存在
sqlInfo = @"select * from ICSLocation where LocationCode='{0}' and WorkPoint='{1}' ";
sqlInfo = string.Format(sqlInfo, JsonData.LocationCode, JsonData.WorkPoint);
dtInfo = DBHelper.SQlReturnData(sqlInfo, cmd);
if (dtInfo.Rows.Count <= 0)
{
throw new Exception("目标库位不存在,请输入正确的目标库位!");
}
sqlNum = @"select * from ICSWareHouseLotInfo where LotNo='{0}' and WorkPoint='{1}' ";
sqlNum = string.Format(sqlNum, JsonData.Lotno, JsonData.WorkPoint);
dtInfoModel = DBHelper.SQlReturnData(sqlNum, cmd);
if (dtInfoModel.Rows.Count < 0)
{
throw new Exception("条码不存在!");
}
bool isTransfer = verification.isTransfer(JsonData.TransCode, JsonData.TransSequence, JsonData.Quantity, JsonData.Lotno, JsonData.WarehouseCode, JsonData.LocationCode, JsonData.WorkPoint);
if (isTransfer == true)
{
string updateSql = @"update ICSTransfer set TransferQuantity ='{0}' where TransferNO='{1}' and Sequence='{2}' and WorkPoint='{3}'";
updateSql = string.Format(updateSql, JsonData.Quantity, JsonData.TransCode, JsonData.TransSequence, JsonData.WorkPoint);
cmd.CommandText = updateSql;
num = cmd.ExecuteNonQuery();
string HouseSql = @" update ICSWareHouseLotInfo set WarehouseCode='{0}',LocationCode='{1}' where LotNo='{2}' and WorkPoint='{3}' ";
HouseSql = string.Format(HouseSql, JsonData.WarehouseCode, JsonData.LocationCode, JsonData.Lotno, JsonData.WorkPoint);
cmd.CommandText = HouseSql;
num = cmd.ExecuteNonQuery();
sqlInsert = @"INSERT INTO [dbo].[ICSWareHouseLotInfoLog]
([ID]
,[TransCode]
,[TransSequence]
,[LotNo]
,[InvCode]
,[FromWarehouseCode]
,[FromLocationCode]
,[ToWarehouseCode]
,[ToLocationCode]
,[Quantity]
,[Memo]
,[Lock]
,[TransType]
,[BusinessCode]
,[ERPID]
,[ERPDetailID]
,[ERPCode]
,[ERPSequence]
,[MUSER]
,[MUSERName]
,[MTIME]
,[WorkPoint]
,[EATTRIBUTE1])
VALUES
(newid()
,'{0}'--TransCode
,'null'
,'{1}'
,(select InvCode from ICSWareHouseLotInfo where LotNo='{1}' )
,(select WarehouseCode from ICSWareHouseLotInfo where LotNo='{1}')
,(select LocationCode from ICSWareHouseLotInfo where LotNo='{1}')
,'null'--LocationCode
,'{2}'--LocationCode
,'{3}'--Quantity
,'null'
,0
,6
,'13'
,'null'
,'null'
,'null'
,'null'
,'{4}'
,'{4}'
,'{5}'
,'{6}'
,'null')";
sqlInsert = string.Format(sqlInsert, JsonData.TransCode, JsonData.Lotno, JsonData.LocationCode, JsonData.Quantity, JsonData.User, DateTime.Now, JsonData.WorkPoint);
cmd.CommandText = sqlInsert;
num = cmd.ExecuteNonQuery();
if (num > 0)
{
//throw new Exception("");
cmd.Transaction.Commit();
string ing = "成功 ";
return ing;
}
else
{
cmd.Transaction.Rollback();
}
}
return null;
}
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();
}
}
#endregion
#region 接口调用
public static string HttpPost(string apiName, string url, string body)
{
try
{
Encoding encoding = Encoding.UTF8;
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
request.Method = "POST";
request.Accept = "application/json, text/javascript, */*"; //"text/html, application/xhtml+xml, */*";
request.ContentType = "application/json; charset=utf-8";
// request.ContentType = "text/html, application/xhtml+xml";
byte[] buffer = encoding.GetBytes(body);
request.ContentLength = buffer.Length;
request.GetRequestStream().Write(buffer, 0, buffer.Length);
System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
using (System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream(), encoding))
{
return reader.ReadToEnd();
}
}
catch (System.Net.WebException ex)
{
throw new Exception(apiName + "调用失败," + ex.Message);
}
}
#endregion
#region logIn
public object CheckLogin(Sys_SRM_User userModel)
{
List<Sys_SRM_User> userLogOnEntity = new List<Sys_SRM_User>();
SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
conn.Open();
SqlTransaction sqlTran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
cmd.Transaction = sqlTran;
cmd.Connection = conn;
DataTable dt;
try
{
sql = @"select * from Sys_SRM_User where F_Account='{0}' and F_Location='{1}' and F_EnabledMark='1'";//已经启用的账号
sql = string.Format(sql, userModel.UserCode, userModel.WorkPoint);
dt = DBHelper.SQlReturnData(sql, cmd);
if (dt.Rows.Count > 0)//查询的数据不为空
{
sqlInfo = @" select a.[F_Id] as UserId
,[F_Account] as userCode
,[F_RealName] as UserName
,[F_NickName]
,b.F_UserPassword
,b.F_UserSecretkey
,[F_HeadIcon]
,[F_Gender]
,[F_Birthday]
,[F_MobilePhone]
,[F_Email]
,[F_WeChat]
,[F_ManagerId]
,[F_SecurityLevel]
,[F_Signature]
,[F_OrganizeId]
,[F_DepartmentId]
,[F_RoleId]
,[F_DutyId]
,[F_IsAdministrator]
,[F_SortCode]
,[F_DeleteMark]
,[F_EnabledMark]
,[F_Description]
,[F_CreatorTime]
,[F_CreatorUserId]
,[F_LastModifyTime]
,[F_LastModifyUserId]
,[F_DeleteTime]
,[F_DeleteUserId]
,[F_Location] as WorkPoint
,[F_VenCode]
from Sys_SRM_User a
left join Sys_SRM_UserLogOn b on b.F_UserId=a.F_Id
where F_Account='{0}' and F_Location='{1}' and F_EnabledMark='1'";
sqlInfo = string.Format(sqlInfo, userModel.UserCode, userModel.WorkPoint);
dt = DBHelper.SQlReturnData(sqlInfo, cmd);
IList<UserLogOnEntity> users = DBHelper.ModelConvertHelper<UserLogOnEntity>.ConvertToModel(dt);
// string dbPassword = Md5.md5(DESEncrypt.Encrypt(userModel.F_UserPassword.ToLower(), item.F_UserSecretkey.ToLower()).ToLower(), 32).ToLower();
foreach (var item in users)
{
//string UserPassword = Md5.md5(DESEncrypt.Encrypt(userModel.F_UserPassword.ToLower()),16).ToLower();
string dbPassword = Md5.md5(DESEncrypt.Encrypt(userModel.UserPassword.ToLower(), item.F_UserSecretkey.ToLower()).ToLower(), 32).ToLower();
if (dbPassword == item.F_UserPassword)
{
string json = JsonConvert.SerializeObject(dt);
userLogOnEntity = JsonConvert.DeserializeObject<List<Sys_SRM_User>>(json);
return userLogOnEntity;
}
else
{
throw new Exception("密码不正确,请重新输入");
}
}
}
else
{
throw new Exception("用户名不存在,请重新输入!");
}
//cmd.CommandText = sql;
//int num = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
log.Error(ex.Message);
throw new Exception(ex.Message);
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
conn.Dispose();
}
return null;
}
#endregion
}
}