using ICSSoft.Common;
using ICSSoft.Entity;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

namespace ICSSoft.DataProject
{
    /// <summary>
    /// 使用中
    /// 更新库存表、日志表
    /// </summary>
    public class ICSWareHouseLotInfoService
    {
        private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);


        /// <summary>
        /// 分批
        /// </summary>
        /// <param name="Identification"></param>
        /// <param name="TransCode"></param>
        /// <param name="TransSequence"></param>
        /// <param name="LotNo"></param>
        /// <param name="Quantity"></param>
        /// <param name="User"></param>
        /// <param name="WorkPoint"></param>
        /// <param name="TransType"></param>
        /// <param name="BusinessCode"></param>
        /// <param name="cmd"></param>
        public static void WareHouseLotInfoInBatches(string Identification, string TransCode, string TransSequence, string LotNo, string Quantity, string User,
    string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string MergeID = "")
        {

        }
        /// <summary>
        /// 添加库存
        /// </summary>
        /// <param name="LocationCode"></param>
        /// <param name="LotNo"></param>
        /// <param name="Quantity"></param>
        /// <param name="User"></param>
        /// <param name="WorkPoint"></param>
        /// <param name="TransType"></param>
        /// <param name="BusinessCode"></param>
        /// <param name="cmd"></param>
        /// <param name="jointLotNo"></param>
        public static void WareHouseLotInfoUp(string Identification, string LocationCode, string LotNo, string Quantity, string User,
        string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string LogID,string jointLotNo)
        {
            try
            {
                ///添加库存(原条码退回,更新库存;新条码直接入库)
                string sql = string.Empty;
                if (BusinessCode != TransTypeEnum.SalesReturnBack.GetDescription<DBValue>()
                    && string.IsNullOrWhiteSpace(LogID))
                {
                    sql = @"IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
                            BEGIN
	                            RAISERROR('" + language.GetNameByCode("WMSAPIInfo164") + @"',16,1);
                                RETURN
                            END ";
                }
                sql += @" IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
                        BEGIN
	                        RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
                            RETURN
                        END

                        IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
                        BEGIN
	                        UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)+'{3}' WHERE LotNo='{0}' AND WorkPoint='{1}'
                        END
                        ELSE
                        BEGIN
                            IF EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
                                INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
                                WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}')
                            BEGIN
                                IF NOT EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
                                    INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
                                    WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}' AND il.LocationCode='{4}')
                                BEGIN
                                    RAISERROR('" + language.GetNameByCode("WMSAPIInfo180") + @"',16,1);
                                    RETURN
                                END
                            END
                            INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
                            SELECT NEWID(),a.LotNo ,e.WarehouseCode,d.LocationCode,a.InvCode ,'{3}',SYSDATETIME(),'0',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,''
                            FROM ICSInventoryLot a
                            INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                            --INNER JOIN ICSOApplyNegDetail c ON b.TransCode=c.OApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
                            INNER JOIN ICSLocation d ON d.LocationCode='{4}' AND a.WorkPoint=d.WorkPoint
                            INNER JOIN ICSWarehouse e ON d.WHID=e.ID AND d.WorkPoint=e.WorkPoint
                            INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                            WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
                        END";
                sql = string.Format(sql, LotNo, WorkPoint, User, Quantity, LocationCode);

                if (!DBHelper.ExecuteNonQuery(sql, cmd))
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo165"));
                }

                ///添加日志
                sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
                        FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
                        Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
                        ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
                        MTIME,WorkPoint,EATTRIBUTE1,LogID)
                        SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
                        '','',c.WarehouseCode,c.LocationCode,'{6}',
                        '','0','{4}','{5}','0','',
                        '','','',f.F_Account ,f.F_RealName ,
                        SYSDATETIME() ,a.WorkPoint ,'','{7}'
                        FROM ICSInventoryLot a
                        INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                        INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
                        ";
                sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity, LogID);

                if (!DBHelper.ExecuteNonQuery(sql, cmd))
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
                }

                ControlMode mode =  ICSControlModeService.GetControlMode();
                //管控方式是"料品"时
                if (mode.itemCode.Equals("ControlMode02"))
                {
                    ///将物料编码作为物料条码添加库存(原条码退回,更新库存;新条码直接入库)
                    if (BusinessCode != TransTypeEnum.SalesReturnBack.GetDescription<DBValue>()
                        && string.IsNullOrWhiteSpace(LogID))
                    {
                        sql = @"IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
                            BEGIN
	                            RAISERROR('" + language.GetNameByCode("WMSAPIInfo164") + @"',16,1);
                                RETURN
                            END ";
                    }
                    sql += @" IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
                        BEGIN
	                        RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
                            RETURN
                        END

                        IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
                        BEGIN
	                        UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)+'{3}' WHERE LotNo='{0}' AND WorkPoint='{1}'
                        END
                        ELSE
                        BEGIN
                            IF EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
                                INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
                                WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}')
                            BEGIN
                                IF NOT EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
                                    INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
                                    WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}' AND il.LocationCode='{4}')
                                BEGIN
                                    RAISERROR('" + language.GetNameByCode("WMSAPIInfo180") + @"',16,1);
                                    RETURN
                                END
                            END
                            INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
                            SELECT NEWID(),a.LotNo ,e.WarehouseCode,d.LocationCode,a.InvCode ,'{3}',SYSDATETIME(),'0',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,''
                            FROM ICSInventoryLot a
                            INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                            --INNER JOIN ICSOApplyNegDetail c ON b.TransCode=c.OApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
                            INNER JOIN ICSLocation d ON d.LocationCode='{4}' AND a.WorkPoint=d.WorkPoint
                            INNER JOIN ICSWarehouse e ON d.WHID=e.ID AND d.WorkPoint=e.WorkPoint
                            INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                            WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
                        END";
                    sql = string.Format(sql, jointLotNo, WorkPoint, User, Quantity, LocationCode);

                    if (!DBHelper.ExecuteNonQuery(sql, cmd))
                    {
                        throw new Exception(language.GetNameByCode("WMSAPIInfo165"));
                    }

                    ///添加日志
                    sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
                        FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
                        Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
                        ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
                        MTIME,WorkPoint,EATTRIBUTE1,LogID)
                        SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
                        '','',c.WarehouseCode,c.LocationCode,'{6}',
                        '','0','{4}','{5}','0','',
                        '','','',f.F_Account ,f.F_RealName ,
                        SYSDATETIME() ,a.WorkPoint ,'','{7}'
                        FROM ICSInventoryLot a
                        INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                        INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
                        ";
                    sql = string.Format(sql, jointLotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity, LogID);

                    if (!DBHelper.ExecuteNonQuery(sql, cmd))
                    {
                        throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
        }

        /// <summary>
        /// 减少库存
        /// </summary>
        /// <param name="Identification"></param>
        /// <param name="TransCode"></param>
        /// <param name="TransSequence"></param>
        /// <param name="LotNo"></param>
        /// <param name="Quantity"></param>
        /// <param name="User"></param>
        /// <param name="WorkPoint"></param>
        /// <param name="TransType"></param>
        /// <param name="BusinessCode"></param>
        /// <param name="cmd"></param>
        public static DataTable WareHouseLotInfoDown(string Identification, string TransCode, string TransSequence, string LotNo, string Quantity, string User,
            string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string MergeID = "")
        {
            String LotEnable = "";
            String PrintEnable = "";
            string lotstr = "";
            int result = 0;
            List<string> NewBarCodeList = new List<string>();
            DataTable dtLotno = new DataTable();
            DataTable lstDt = new DataTable();
            try
            {
                
                ///更新库存
                string sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'

                               IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
                                BEGIN
	                                RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
                                    RETURN
                                END";
                sql = string.Format(sql, LotNo, WorkPoint, Quantity);

                if (!DBHelper.ExecuteNonQuery(sql, cmd))
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
                }

                

                //检验是否分批
                sql = @"SELECT b.LotEnable,b.PrintEnable FROM ICSInventoryLot a
                            LEFT JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
                            where a.LotNo='{0}' and a.WorkPoint='{1}'
                         ";
                sql = string.Format(sql, LotNo, WorkPoint);
                DataTable dt = DBHelper.SQlReturnData(sql, cmd);
                if (dt.Rows.Count == 0)
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
                }
                else
                {
                    LotEnable = dt.Rows[0]["LotEnable"].ToString();
                    PrintEnable = dt.Rows[0]["PrintEnable"].ToString();
                }
                if (LotEnable.Equals("True"))
                {
                    ///分批前添加日志
                     sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
                        BEGIN
	                        RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
                            RETURN
                        END

                        INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
                        FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
                        Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
                        ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
                        MTIME,WorkPoint,EATTRIBUTE1)
                        SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
                        '','',c.WarehouseCode,c.LocationCode,c.Quantity+{6},
                        '','0','{4}','31','0','',
                        '','','',f.F_Account ,f.F_RealName ,
                        SYSDATETIME() ,a.WorkPoint ,''
                        FROM ICSInventoryLot a
                        INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                        INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
                        ";
                    sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode, Quantity);

                    if (!DBHelper.ExecuteNonQuery(sql, cmd))
                    {
                        throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
                    }
                    #region 获取分批后的条码(lotstr)
                    sql = @"SELECT  TOP 1 LotNO FROM ICSInventoryLot WHERE EATTRIBUTE1='{0}' AND WorkPoint='{1}' 
                            ORDER BY CAST(SUBSTRING(LotNO, (LEN(LotNO)-CHARINDEX('-',REVERSE(LotNO))+1)+1,CHARINDEX('-',REVERSE(LotNO))-1) AS INT) DESC";
                    sql = string.Format(sql, LotNo, WorkPoint);
                    dt = DBHelper.SQlReturnData(sql, cmd);
                    if (dt.Rows.Count == 0)
                    {
                        lotstr = LotNo + "-" + 1;
                    }
                    else
                    {
                        lotstr = LotNo + "-" + (Convert.ToInt32(dt.Rows[0]["LotNO"].ToString().Split('-')[dt.Rows[0]["LotNO"].ToString().Split('-').Length - 1]) + 1).ToString();
                    }
                    NewBarCodeList.Add(lotstr);//将分批后新条码添加到新集合
                    #endregion

                    #region 将分批后的条码记录插入条码表,库存表及日志表并将原条码库存数量清零
                    sql = @"INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,
                                Quantity,Amount,ExtensionID,Type,PrintTimes,
                                LastPrintUser,LastPrintTime,MUSER,MUSERName,MTIME,
                                WorkPoint,EATTRIBUTE1)
                            SELECT TOP 1 NEWID(),'{0}',a.InvCode,a.ProductDate,a.ExpirationDate,
                            '{2}',a.Amount,a.ExtensionID,a.Type,a.PrintTimes,
                            a.LastPrintUser,a.LastPrintTime,a.MUSER ,a.MUSERName ,GETDATE(),
                            a.WorkPoint ,'{1}'
                            From ICSInventoryLot a 
                            where a.LotNo='{1}' and a.WorkPoint='{3}'";
                    sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint);
                    cmd.CommandText = sql;
                    result = cmd.ExecuteNonQuery();
                    if (result <= 0)
                    {
                        throw new Exception(language.GetNameByCode("WMSAPIInfo195"));//条码分批后条码表存入失败!
                    }
                    sql = @"INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
                            select NEWID(),'{0}',WarehouseCode,LocationCode,InvCode,'{2}',InDate,LockQuantity
                            ,MUSER,MUSERName,GETDATE(),'{3}',''
                            from ICSWareHouseLotInfo
                            where LotNO='{1}' AND WorkPoint='{3}'";
                    sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint);
                    cmd.CommandText = sql;
                    result = cmd.ExecuteNonQuery();
                    if (result <= 0)
                    {
                        throw new Exception(language.GetNameByCode("WMSAPIInfo196"));//条码分批后库存表存入失败!
                    }
                    //插入条码单据表
                    sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
                        SELECT '{3}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint
                        FROM ICSInventoryLot a
                        INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
                    sql = string.Format(sql, LotNo, WorkPoint, User, lotstr);

                    if (!DBHelper.ExecuteNonQuery(sql, cmd))
                    {
                        throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
                    }
                    sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
                        FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
                        Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
                        ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
                        MTIME,WorkPoint,EATTRIBUTE1,LogID)
                        SELECT NEWID(),'{3}','{4}','{5}','{10}' ,a.InvCode ,
                        c.WarehouseCode,c.LocationCode,'','','{6}',
                        '','0','{7}','105','0','',
                        '','','',f.F_Account ,f.F_RealName ,
                        SYSDATETIME() ,a.WorkPoint ,'','{9}'
                        FROM ICSInventoryLot a
                        INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
                        ";
                    sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, lotstr);
                    cmd.CommandText = sql;
                    result = cmd.ExecuteNonQuery();
                    if (result <= 0)
                    {
                        throw new Exception(language.GetNameByCode("WMSAPIInfo197"));//条码分批后库存日志表存入失败!
                    }

                    if (PrintEnable.Equals("True"))
                    {
                        sql = @"select A.LotNO AS OLDLotNo ,  C.Quantity AS OLDLotQty, A.eattribute1 as LotNO, B.Quantity AS  LotQty ,b.InvCode,d.INVSTD,d.INVNAME,b.MTIME,A.TransCode
                                from ICSWareHouseLotInfolog A  
                                left join   ICSInventoryLot  B on  A.LotNO=B.LotNO and a.WorkPoint=b.WorkPoint 
                                left join  ICSWareHouseLotInfo C  ON A.LotNO=C.LotNO and a.WorkPoint=c.WorkPoint 
                                left join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint 
                                where a.BusinessCode ='105'
                                and A.lotno like'{0}%'  and a.workpoint='{1}'
                                ";
                        sql = string.Format(sql, LotNo, WorkPoint);
                        dtLotno = DBHelper.SQlReturnData(sql, cmd);
                        lstDt=dtLotno;
                    }

                    ///添加日志
                    sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
                        BEGIN
	                        RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
                            RETURN
                        END

                        INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
                        FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
                        Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
                        ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
                        MTIME,WorkPoint,EATTRIBUTE1,MergeID)
                        SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
                        c.WarehouseCode,c.LocationCode,'','',c.Quantity,
                        '','0','{7}','32','0','',
                        '','','',f.F_Account ,f.F_RealName ,
                        SYSDATETIME() ,a.WorkPoint ,'','{9}'
                        FROM ICSInventoryLot a
                        INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
                        ";
                    sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID);

                    if (!DBHelper.ExecuteNonQuery(sql, cmd))
                    {
                        throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
                    }

                    #endregion
                }
                else
                {
                    NewBarCodeList.Add(LotNo);
                    
                    ///添加日志
                    sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
                        BEGIN
	                        RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
                            RETURN
                        END

                        INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
                        FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
                        Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
                        ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
                        MTIME,WorkPoint,EATTRIBUTE1,MergeID)
                        SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
                        c.WarehouseCode,c.LocationCode,'','','{6}',
                        '','0','{7}','{8}','0','',
                        '','','',f.F_Account ,f.F_RealName ,
                        SYSDATETIME() ,a.WorkPoint ,'','{9}'
                        FROM ICSInventoryLot a
                        INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
                        ";
                    sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID);

                    if (!DBHelper.ExecuteNonQuery(sql, cmd))
                    {
                        throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
                    }
                }
                


            }
            catch (Exception)
            {
                throw;
            }
            return lstDt;
        }

        /// <summary>
        /// 修改库存
        /// </summary>
        /// <param name="Identification"></param>
        /// <param name="TransCode"></param>
        /// <param name="TransSequence"></param>
        /// <param name="LotNo"></param>
        /// <param name="Quantity"></param>
        /// <param name="User"></param>
        /// <param name="WorkPoint"></param>
        /// <param name="TransType"></param>
        /// <param name="cmd"></param>
        public static void WareHouseLotInfoUpdate(string Identification, string TransCode, string TransSequence, string LotNo, string Quantity, string User,
            string WorkPoint, string TransType, SqlCommand cmd, Dictionary<string, string> language)
        {
            try
            {
                ///添加日志
                string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
                        BEGIN
	                        RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
                            RETURN
                        END

                        INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
                        FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
                        Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
                        ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
                        MTIME,WorkPoint,EATTRIBUTE1)
                        SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
                        a.WarehouseCode,a.LocationCode,'','',a.Quantity,
                        '盘点','0','{6}','{7}','0','',
                        '','','',f.F_Account ,f.F_RealName ,
                        SYSDATETIME() ,a.WorkPoint ,''
                        FROM ICSWareHouseLotInfo a
                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
                        ";
                sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, TransType, TransTypeEnum.LOTCheckBefore.GetDescription<DBValue>());

                if (!DBHelper.ExecuteNonQuery(sql, cmd))
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
                }
                ///更新库存
                sql = @"UPDATE ICSWareHouseLotInfo SET Quantity='{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'";
                sql = string.Format(sql, LotNo, WorkPoint, Quantity);

                if (!DBHelper.ExecuteNonQuery(sql, cmd))
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
                }
                ///添加日志
                sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
                        FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
                        Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
                        ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
                        MTIME,WorkPoint,EATTRIBUTE1)
                        SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
                        a.WarehouseCode,a.LocationCode,'','',a.Quantity,
                        '盘点','0','{6}','{7}','0','',
                        '','','',f.F_Account ,f.F_RealName ,
                        SYSDATETIME() ,a.WorkPoint ,''
                        FROM ICSWareHouseLotInfo a
                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
                        ";
                sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, TransType, TransTypeEnum.LOTCheckAfter.GetDescription<DBValue>());

                if (!DBHelper.ExecuteNonQuery(sql, cmd))
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
        /// <summary>
        /// 调拨
        /// </summary>
        /// <param name="LocationCode"></param>
        /// <param name="LotNo"></param>
        /// <param name="Quantity"></param>
        /// <param name="User"></param>
        /// <param name="WorkPoint"></param>
        /// <param name="TransType"></param>
        /// <param name="BusinessCode"></param>
        /// <param name="cmd"></param>
        public static DataTable WareHouseLotInfoTransfer(string Identification, string TransCode, string TransSequence, string WarehouseCode, string LocationCode,
            string LotNo, string Quantity, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language, string MergeID)
        {
            String LotEnable = "";
            String PrintEnable = "";
            string lotstr = "";
            int result = 0;
            DataTable dtLotno = new DataTable();
            DataTable lstDt = new DataTable();
            List<string> NewBarCodeList = new List<string>();
            try
            {
                ///分批前添加日志
                string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
                        BEGIN
	                        RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
                            RETURN
                        END

                        INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
                        FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
                        Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
                        ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
                        MTIME,WorkPoint,EATTRIBUTE1)
                        SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
                        '','',c.WarehouseCode,c.LocationCode,c.Quantity,
                        '','0','{4}','31','0','',
                        '','','',f.F_Account ,f.F_RealName ,
                        SYSDATETIME() ,a.WorkPoint ,''
                        FROM ICSInventoryLot a
                        INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                        INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
                        ";
                sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode);

                if (!DBHelper.ExecuteNonQuery(sql, cmd))
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
                }
                //检验是否分批
                sql = @"SELECT b.LotEnable,b.PrintEnable FROM ICSInventoryLot a
                            LEFT JOIN ICSInventory b ON a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
                            where a.LotNo='{0}' and a.WorkPoint='{1}'
                         ";
                sql = string.Format(sql, LotNo, WorkPoint);
                DataTable dt = DBHelper.SQlReturnData(sql, cmd);
                if (dt.Rows.Count == 0)
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo369"));
                }
                else
                {
                    LotEnable = dt.Rows[0]["LotEnable"].ToString();
                    PrintEnable = dt.Rows[0]["PrintEnable"].ToString();
                }
                if (!LotEnable.Equals("False"))
                {
                    #region 获取分批后的条码(lotstr)
                    sql = @"SELECT  TOP 1 LotNO FROM ICSInventoryLot WHERE EATTRIBUTE1='{0}' AND WorkPoint='{1}' 
                            ORDER BY CAST(SUBSTRING(LotNO, (LEN(LotNO)-CHARINDEX('-',REVERSE(LotNO))+1)+1,CHARINDEX('-',REVERSE(LotNO))-1) AS INT) DESC";
                    sql = string.Format(sql, LotNo, WorkPoint);
                    dt = DBHelper.SQlReturnData(sql, cmd);
                    if (dt.Rows.Count == 0)
                    {
                        lotstr = LotNo + "-" + 1;
                    }
                    else
                    {
                        lotstr = LotNo + "-" + (Convert.ToInt32(dt.Rows[0]["LotNO"].ToString().Split('-')[dt.Rows[0]["LotNO"].ToString().Split('-').Length - 1]) + 1).ToString();
                    }
                    NewBarCodeList.Add(lotstr);//将分批后新条码添加到新集合
                    #endregion

                    #region 将分批后的条码记录插入条码表,库存表及日志表并将原条码库存数量清零
                    sql = @"INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,
                                Quantity,Amount,ExtensionID,Type,PrintTimes,
                                LastPrintUser,LastPrintTime,MUSER,MUSERName,MTIME,
                                WorkPoint,EATTRIBUTE1)
                            SELECT TOP 1 NEWID(),'{0}',a.InvCode,a.ProductDate,a.ExpirationDate,
                            '{2}',a.Amount,a.ExtensionID,a.Type,a.PrintTimes,
                            a.LastPrintUser,a.LastPrintTime,a.MUSER ,a.MUSERName ,GETDATE(),
                            a.WorkPoint ,'{1}'
                            From ICSInventoryLot a 
                            where a.LotNo='{1}' and a.WorkPoint='{3}'";
                    sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint);
                    cmd.CommandText = sql;
                    result = cmd.ExecuteNonQuery();
                    if (result <= 0)
                    {
                        throw new Exception(language.GetNameByCode("WMSAPIInfo195"));//条码分批后条码表存入失败!
                    }
                    #endregion
                    sql = @"INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
                            select NEWID(),'{0}',WarehouseCode,LocationCode,InvCode,'{2}',InDate,LockQuantity
                            ,MUSER,MUSERName,GETDATE(),'{3}',''
                            from ICSWareHouseLotInfo
                            where LotNO='{1}' AND WorkPoint='{3}'";
                    sql = string.Format(sql, lotstr, LotNo, Quantity, WorkPoint);
                    cmd.CommandText = sql;
                    result = cmd.ExecuteNonQuery();
                    if (result <= 0)
                    {
                        throw new Exception(language.GetNameByCode("WMSAPIInfo196"));//条码分批后库存表存入失败!
                    }
                    //插入条码单据表
                    sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
                        SELECT '{3}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint
                        FROM ICSInventoryLot a
                        INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
                    sql = string.Format(sql, LotNo, WorkPoint, User, lotstr);

                    if (!DBHelper.ExecuteNonQuery(sql, cmd))
                    {
                        throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
                    }
                    sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
                        FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
                        Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
                        ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
                        MTIME,WorkPoint,EATTRIBUTE1,LogID)
                        SELECT NEWID(),'{3}','{4}','{5}','{10}' ,a.InvCode ,
                        c.WarehouseCode,c.LocationCode,'','','{6}',
                        '','0','{7}','105','0','',
                        '','','',f.F_Account ,f.F_RealName ,
                        SYSDATETIME() ,a.WorkPoint ,'','{9}'
                        FROM ICSInventoryLot a
                        INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
                        ";
                    sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, MergeID, lotstr);
                    cmd.CommandText = sql;
                    result = cmd.ExecuteNonQuery();
                    if (result <= 0)
                    {
                        throw new Exception(language.GetNameByCode("WMSAPIInfo197"));//条码分批后库存日志表存入失败!
                    }
                    ///添加日志
                    sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
                        BEGIN
	                        RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
                            RETURN
                        END

                        IF EXISTS(SELECT id FROM ICSWareHouseLotInfo WHERE WarehouseCode='{9}' AND LocationCode='{10}' AND WorkPoint='{1}' AND LotNo = '{0}')
                        BEGIN
	                        RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo355")) + @"',16,1);
                            RETURN
                        END

                        INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
                        FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
                        Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
                        ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
                        MTIME,WorkPoint,EATTRIBUTE1,MergeID)
                        SELECT NEWID(),'{3}','','',a.LotNo ,a.InvCode ,
                        c.WarehouseCode,c.LocationCode,'{9}','{10}',{6},
                        '','0','{7}','32','0','',
                        '','','',f.F_Account ,f.F_RealName ,
                        SYSDATETIME() ,a.WorkPoint ,'','{11}'
                        FROM ICSInventoryLot a
                        INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
                        ";
                    sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, WarehouseCode, LocationCode, MergeID);

                    if (!DBHelper.ExecuteNonQuery(sql, cmd))
                    {
                        throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
                    }
                    if (PrintEnable.Equals("True"))
                    {
                        sql = @"select A.LotNO AS OLDLotNo ,  C.Quantity AS OLDLotQty, A.eattribute1 as LotNO, B.Quantity AS  LotQty ,b.InvCode,d.INVSTD,d.INVNAME,b.MTIME,A.TransCode
                                from ICSWareHouseLotInfolog A  
                                left join   ICSInventoryLot  B on  A.LotNO=B.LotNO and a.WorkPoint=b.WorkPoint 
                                left join  ICSWareHouseLotInfo C  ON A.LotNO=C.LotNO and a.WorkPoint=c.WorkPoint 
                                left join ICSInventory D on b.INVCODE=d.INVCODE and b.WorkPoint=d.WorkPoint 
                                where a.BusinessCode ='105'
                                and A.lotno like'{0}%'  and a.workpoint='{1}'
                                ";
                        sql = string.Format(sql, LotNo, WorkPoint);
                        dtLotno = DBHelper.SQlReturnData(sql, cmd);
                        lstDt = dtLotno;
                    }
                }
                else
                {
                    ///添加日志
                    sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
                        BEGIN
	                        RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
                            RETURN
                        END

                        IF EXISTS(SELECT id FROM ICSWareHouseLotInfo WHERE WarehouseCode='{9}' AND LocationCode='{10}' AND WorkPoint='{1}' AND LotNo = '{0}')
                        BEGIN
	                        RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo355")) + @"',16,1);
                            RETURN
                        END

                        INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
                        FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
                        Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
                        ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
                        MTIME,WorkPoint,EATTRIBUTE1,MergeID)
                        SELECT NEWID(),'{3}','','',a.LotNo ,a.InvCode ,
                        c.WarehouseCode,c.LocationCode,'{9}','{10}',{6},
                        '','0','{7}','{8}','0','',
                        '','','',f.F_Account ,f.F_RealName ,
                        SYSDATETIME() ,a.WorkPoint ,'','{11}'
                        FROM ICSInventoryLot a
                        INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
                        ";
                    sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, WarehouseCode, LocationCode, MergeID);

                    if (!DBHelper.ExecuteNonQuery(sql, cmd))
                    {
                        throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
                    }
                }
                    
                ///添加库存
                sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity>0)
                        BEGIN
	                        RAISERROR('" + language.GetNameByCode("WMSAPIInfo038") + @"',16,1);
                            RETURN
                        END
                        IF EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE LotNo='{0}' AND WorkPoint='{1}' AND a.Quantity<{4})
                        BEGIN
	                        RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
                            RETURN
                        END

                        UPDATE ICSWareHouseLotInfo SET WarehouseCode='{2}',LocationCode='{3}' WHERE LotNo='{0}' AND WorkPoint='{1}'
                        ";
                sql = string.Format(sql, LotNo, WorkPoint, WarehouseCode, LocationCode, Quantity);

                if (!DBHelper.ExecuteNonQuery(sql, cmd))
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存表更新失败!");
                }
            }
            catch (Exception)
            {
                throw;
            }
            return lstDt;
        }

        /// <summary>
        /// 移库
        /// </summary>
        /// <param name="LocationCode"></param>
        /// <param name="LotNo"></param>
        /// <param name="Quantity"></param>
        /// <param name="User"></param>
        /// <param name="WorkPoint"></param>
        /// <param name="TransType"></param>
        /// <param name="BusinessCode"></param>
        /// <param name="cmd"></param>
        public static void WareHouseLotInfoLibrary(string Identification, string TransCode, string TransSequence, string WarehouseCode, string LocationCode,
            string LotNo, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
        {
            try
            {
                ///添加日志
                string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
                        BEGIN
	                        RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
                            RETURN
                        END

                        INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
                        FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
                        Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
                        ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
                        MTIME,WorkPoint,EATTRIBUTE1)
                        SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
                        c.WarehouseCode,c.LocationCode,'{8}','{9}',c.Quantity,
                        '','0','{6}','{7}','0','',
                        '','','',f.F_Account ,f.F_RealName ,
                        SYSDATETIME() ,a.WorkPoint ,''
                        FROM ICSInventoryLot a
                        INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
                        ";
                sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, TransType, BusinessCode, WarehouseCode, LocationCode);

                if (!DBHelper.ExecuteNonQuery(sql, cmd))
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
                }
                ///添加库存
                sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity>0)
                        BEGIN
	                        RAISERROR('" + language.GetNameByCode("WMSAPIInfo038") + @"',16,1);
                            RETURN
                        END

                        UPDATE ICSWareHouseLotInfo SET WarehouseCode='{2}',LocationCode='{3}' WHERE LotNo='{0}' AND WorkPoint='{1}'
                        ";
                sql = string.Format(sql, LotNo, WorkPoint, WarehouseCode, LocationCode);

                if (!DBHelper.ExecuteNonQuery(sql, cmd))
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存表更新失败!");
                }
            }
            catch (Exception)
            {
                throw;
            }
        }

        /// <summary>
        /// 两步调入
        /// </summary>
        /// <param name="LocationCode"></param>
        /// <param name="LotNo"></param>
        /// <param name="Quantity"></param>
        /// <param name="User"></param>
        /// <param name="WorkPoint"></param>
        /// <param name="TransType"></param>
        /// <param name="BusinessCode"></param>
        /// <param name="cmd"></param>
        public static void WareHouseLotInfoTwoStepTransferDocIn(string Identification, string TransCode, string TransSequence, string WarehouseCode,
            string LocationCode, string LotNo, string Quantity, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
        {
            try
            {
                ///添加日志
                string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
                        BEGIN
	                        RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
                            RETURN
                        END

                        INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
                        FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
                        Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
                        ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
                        MTIME,WorkPoint,EATTRIBUTE1)
                        SELECT NEWID(),'{3}','{4}','{5}',a.LotNo ,a.InvCode ,
                        c.WarehouseCode,c.LocationCode,'{9}','{10}','{6}',
                        '','0','{7}','{8}','0','',
                        '','','',f.F_Account ,f.F_RealName ,
                        SYSDATETIME() ,a.WorkPoint ,''
                        FROM ICSInventoryLot a
                        INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
                        ";
                sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransCode, TransSequence, Quantity, TransType, BusinessCode, WarehouseCode, LocationCode);

                if (!DBHelper.ExecuteNonQuery(sql, cmd))
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
                }
                ///添加库存
                sql = @"IF NOT EXISTS(SELECT a.ID FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
                        BEGIN
	                        RAISERROR('" + language.GetNameByCode("WMSAPIInfo171") + @"',16,1);
                            RETURN
                        END

                        UPDATE ICSWareHouseLotInfo SET WarehouseCode='{2}',LocationCode='{3}',Quantity='{4}' WHERE LotNo='{0}' AND WorkPoint='{1}'
                        ";
                sql = string.Format(sql, LotNo, WorkPoint, WarehouseCode, LocationCode, Quantity);

                if (!DBHelper.ExecuteNonQuery(sql, cmd))
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存表更新失败!");
                }
            }
            catch (Exception)
            {
                throw;
            }
        }

        /// <summary>
        /// 拆分、合并日志
        /// </summary>
        /// <param name="Identification"></param>
        /// <param name="LotNo"></param>
        /// <param name="User"></param>
        /// <param name="WorkPoint"></param>
        /// <param name="TransType"></param>
        /// <param name="BusinessCode"></param>
        /// <param name="cmd"></param>
        public static void WareHouseLotInfoLog(string Identification, string LotNo, string User, string WorkPoint, string TransType, string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
        {
            try
            {
                ///添加日志
                string sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
                        BEGIN
	                        RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
                            RETURN
                        END

                        INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
                        FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
                        Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
                        ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
                        MTIME,WorkPoint,EATTRIBUTE1)
                        SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
                        '','',c.WarehouseCode,c.LocationCode,c.Quantity,
                        '','0','{4}','{5}','0','',
                        '','','',f.F_Account ,f.F_RealName ,
                        SYSDATETIME() ,a.WorkPoint ,''
                        FROM ICSInventoryLot a
                        INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                        INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
                        ";
                sql = string.Format(sql, LotNo, WorkPoint, User, Identification, TransType, BusinessCode);

                if (!DBHelper.ExecuteNonQuery(sql, cmd))
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
                }
            }
            catch (Exception)
            {
                throw;
            }
        }

        /// <summary>
        /// 合并
        /// </summary>
        /// <param name="Identification"></param>
        /// <param name="LotNo"></param>
        /// <param name="User"></param>
        /// <param name="WorkPoint"></param>
        /// <param name="TransType"></param>
        /// <param name="BusinessCode"></param>
        /// <param name="cmd"></param>
        public static void WareHouseLotInfoMerge(string Identification, string LotNo, string CurrentLotNo, string Quantity, string User, string WorkPoint, string TransType,
            string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
        {
            try
            {
                ///更新目标条码库存
                string sql = @"IF NOT EXISTS(SELECT a.LotNo FROM ICSInventoryLot a 
							    INNER JOIN ICSInventoryLot b ON b.LotNo='{3}' AND a.InvCode=b.InvCode AND a.WorkPoint=b.WorkPoint
							    WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
                            BEGIN
	                            RAISERROR('" + language.GetNameByCode("WMSAPIInfo170") + @"',16,1);
                                RETURN
                            END
                            IF NOT EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
                            BEGIN
	                            RAISERROR('" + language.GetNameByCode("WMSAPIInfo171") + @"',16,1);
                                RETURN
                            END
                            UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)+'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'
                            ";
                sql = string.Format(sql, LotNo, WorkPoint, Quantity, CurrentLotNo);

                if (!DBHelper.ExecuteNonQuery(sql, cmd))
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo169"));//"目标条码库存更新失败!");
                }
                ///更新原条码库存
                sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'

                        IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
                        BEGIN
	                        RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
                            RETURN
                        END";
                sql = string.Format(sql, CurrentLotNo, WorkPoint, Quantity);

                if (!DBHelper.ExecuteNonQuery(sql, cmd))
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
                }
                ///添加日志
                sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
                        BEGIN
	                        RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
                            RETURN
                        END

                        INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
                        FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
                        Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
                        ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
                        MTIME,WorkPoint,EATTRIBUTE1)
                        SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
                        '','',c.WarehouseCode,c.LocationCode,c.Quantity,
                        '','0','{4}','{5}','0','',
                        '','','',f.F_Account ,f.F_RealName ,
                        SYSDATETIME() ,a.WorkPoint ,''
                        FROM ICSInventoryLot a
                        INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                        INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
                        ";
                sql = string.Format(sql, CurrentLotNo, WorkPoint, User, Identification, TransType, BusinessCode);

                if (!DBHelper.ExecuteNonQuery(sql, cmd))
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
                }
            }
            catch (Exception)
            {
                throw;
            }
        }

        /// <summary>
        /// 拆分
        /// </summary>
        /// <param name="Identification"></param>
        /// <param name="LotNo"></param>
        /// <param name="User"></param>
        /// <param name="WorkPoint"></param>
        /// <param name="TransType"></param>
        /// <param name="BusinessCode"></param>
        /// <param name="cmd"></param>
        public static void WareHouseLotInfoSplit(string Identification, string LotNo, string CurrentLotNo, string Quantity, string User, string WorkPoint, string TransType,
            string BusinessCode, SqlCommand cmd, Dictionary<string, string> language)
        {
            try
            {
                ///更新库存
                string sql = @"UPDATE ICSWareHouseLotInfo SET Quantity=ISNULL(Quantity,0)-'{2}' WHERE LotNo='{0}' AND WorkPoint='{1}'

                               IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}' AND Quantity<0)
                                BEGIN
	                                RAISERROR('" + language.GetNameByCode("WMSAPIInfo167") + @"',16,1);
                                    RETURN
                                END";
                sql = string.Format(sql, LotNo, WorkPoint, Quantity);

                if (!DBHelper.ExecuteNonQuery(sql, cmd))
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo168"));//"库存更新失败!");
                }
                #region 添加库存
                //插入条码表
                sql = @"IF NOT EXISTS(SELECT F_Account FROM Sys_SRM_User WHERE F_Account='{2}' AND F_Location='{1}')
                        BEGIN
	                        RAISERROR('" + string.Format(language.GetNameByCode("WMSAPIInfo060"), "{2}") + @"',16,1);
                            RETURN
                        END

                        IF EXISTS(SELECT a.LotNo FROM ICSInventoryLot a WHERE a.LotNo='{4}' AND a.WorkPoint='{1}')
                        BEGIN
	                        RAISERROR('" + language.GetNameByCode("WMSAPIInfo172") + @"',16,1);
                            RETURN
                        END
                        INSERT INTO ICSInventoryLot(ID,LotNo,InvCode,ProductDate,ExpirationDate,Quantity,ExtensionID,Type,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
                        SELECT NEWID(),'{4}' ,a.InvCode,a.ProductDate,a.ExpirationDate ,'{3}',a.ExtensionID,'101',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,a.LotNo
                        FROM ICSInventoryLot a
                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
                sql = string.Format(sql, LotNo, WorkPoint, User, Quantity, CurrentLotNo);

                if (!DBHelper.ExecuteNonQuery(sql, cmd))
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo173"));//"条码表写入失败!");
                }
                //插入条码单据表
                sql = @"INSERT INTO ICSInventoryLotDetail(LotNo,TransCode,TransSequence,MUSER,MUSERName,MTIME,WorkPoint)
                        SELECT '{3}',b.TransCode,b.TransSequence,f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint
                        FROM ICSInventoryLot a
                        INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
                sql = string.Format(sql, LotNo, WorkPoint, User, CurrentLotNo);

                if (!DBHelper.ExecuteNonQuery(sql, cmd))
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo174"));//"条码单据表写入失败!");
                }
                ///添加库存
                sql = @"IF EXISTS(SELECT a.LotNo FROM ICSWareHouseLotInfo a WHERE a.LotNo='{0}' AND a.WorkPoint='{1}')
                        BEGIN
	                        RAISERROR('" + language.GetNameByCode("WMSAPIInfo164") + @"',16,1);
                            RETURN
                        END
                        IF EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
                            INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
                            INNER JOIN ICSWareHouseLotInfo d ON a.EATTRIBUTE1=d.LotNo AND a.WorkPoint=d.WorkPoint
                            WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}')
                        BEGIN
                            IF NOT EXISTS(SELECT il.InvCode FROM ICSInventoryLocation il
                                INNER JOIN ICSInventoryLot a ON a.InvCode=il.InvCode AND a.WorkPoint=il.WorkPoint
                                INNER JOIN ICSWareHouseLotInfo d ON a.EATTRIBUTE1=d.LotNo AND a.WorkPoint=d.WorkPoint AND il.LocationCode=d.LocationCode
                                WHERE il.Enable='1' AND a.LotNo='{0}' AND a.WorkPoint='{1}')
                            BEGIN
                                RAISERROR('" + language.GetNameByCode("WMSAPIInfo180") + @"',16,1);
                                RETURN
                            END
                        END
                        INSERT INTO ICSWareHouseLotInfo(ID,LotNO,WarehouseCode,LocationCode,InvCode,Quantity,InDate,LockQuantity,MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1)
                        SELECT NEWID(),a.LotNo ,d.WarehouseCode,d.LocationCode,a.InvCode ,'{3}',SYSDATETIME(),'0',f.F_Account ,f.F_RealName ,SYSDATETIME() ,a.WorkPoint ,''
                        FROM ICSInventoryLot a
                        INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                        INNER JOIN ICSWareHouseLotInfo d ON a.EATTRIBUTE1=d.LotNo AND a.WorkPoint=d.WorkPoint
                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'";
                sql = string.Format(sql, CurrentLotNo, WorkPoint, User, Quantity);

                if (!DBHelper.ExecuteNonQuery(sql, cmd))
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo165"));
                }
                ///添加日志
                sql = @"INSERT INTO ICSWareHouseLotInfoLog(ID,Identification,TransCode,TransSequence,LotNo,InvCode,
                        FromWarehouseCode,FromLocationCode,ToWarehouseCode,ToLocationCode,Quantity,
                        Memo,Lock,TransType,BusinessCode,ERPUpload,ERPID,
                        ERPDetailID,ERPCode,ERPSequence,MUSER,MUSERName,
                        MTIME,WorkPoint,EATTRIBUTE1)
                        SELECT NEWID(),'{3}',b.TransCode,b.TransSequence,a.LotNo ,a.InvCode ,
                        '','',c.WarehouseCode,c.LocationCode,c.Quantity,
                        '','0','{4}','{5}','0','',
                        '','','',f.F_Account ,f.F_RealName ,
                        SYSDATETIME() ,a.WorkPoint ,''
                        FROM ICSInventoryLot a
                        INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                        INNER JOIN ICSWareHouseLotInfo c ON a.LotNo=c.LotNo AND a.WorkPoint=c.WorkPoint
                        INNER JOIN Sys_SRM_User f ON f.F_Account='{2}' AND a.WorkPoint=f.F_Location
                        WHERE a.LotNo='{0}' AND a.WorkPoint='{1}'
                        ";
                sql = string.Format(sql, CurrentLotNo, WorkPoint, User, Identification, TransType, BusinessCode);

                if (!DBHelper.ExecuteNonQuery(sql, cmd))
                {
                    throw new Exception(language.GetNameByCode("WMSAPIInfo166"));
                }
                #endregion
            }
            catch (Exception)
            {
                throw;
            }
        }

        /// <summary>
        /// 回写ERP ID
        /// </summary>
        /// <param name="TransType"></param>
        /// <param name="SourceDetailID"></param>
        /// <param name="Identification"></param>
        /// <param name="ID"></param>
        /// <param name="DetailID"></param>
        /// <param name="Code"></param>
        /// <param name="Sequence"></param>
        /// <param name="cmd"></param>
        public static void WareHouseLotInfoLogUpdate(string TransType, string SourceDetailID, string Identification, string ID, string DetailID, string Code, string Sequence, SqlCommand cmd, Dictionary<string, string> language)
        {
            string ERPupdate = string.Empty;
            try
            {
                //采购入库
                if (TransType == TransTypeEnum.PurchaseReceiveDoc.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                                INNER JOIN ICSPurchaseOrder c ON b.TransCode=c.POCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.PODetailID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //审核的到货单
                else if (TransType == TransTypeEnum.DeliveryNotice.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                                INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.DNDetailID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //采购拒收
                else if (TransType == TransTypeEnum.PurchaseRejectDoc.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                                INNER JOIN ICSDeliveryNotice c ON b.TransCode=c.DNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.DNDetailID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //审核的委外到货单
                else if (TransType == TransTypeEnum.ODeliveryNotice.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                                INNER JOIN ICSODeliveryNotice c ON b.TransCode=c.ODNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.ODNDetailID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //委外拒收
                else if (TransType == TransTypeEnum.OutsourcingRejectDoc.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                                INNER JOIN ICSODeliveryNotice c ON b.TransCode=c.ODNCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.ODNDetailID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //采购退货
                else if (TransType == TransTypeEnum.PurchaseReceiveDoctNegative.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSDeliveryNotice c ON a.TransCode=c.DNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.DNDetailID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND  c.DNType='2' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //委外发料
                else if (TransType == TransTypeEnum.OutsourcingIssueDoc.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSOutsourcingOrder y ON a.TransCode=y.OOCode AND a.WorkPoint=y.WorkPoint
                                INNER JOIN ICSOOPick x ON x.OODetailID=y.OODetailID AND a.TransSequence=y.Sequence+'~'+x.Sequence AND x.WorkPoint=y.WorkPoint
                                WHERE x.PickID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //委外退料
                else if (TransType == TransTypeEnum.ICSOutsourcingIssueDoNegative.GetDescription()
                    || TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeApply.GetDescription()
                    || TransType == TransTypeEnum.ICSOutsourcingIssueDoNegativeIssue.GetDescription())
                {
                    ERPupdate = @"--根据退料单退料
                                UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                                INNER JOIN ICSOApplyNegDetail c ON b.TransCode=c.OApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
                                INNER JOIN ICSOApplyNeg d ON c.OApplyNegCode=d.OApplyNegCode AND c.WorkPoint=d.WorkPoint
                                Left JOIN ICSOIssue m ON (CASE WHEN d.Type='3' THEN c.SourceDetailID ELSE 0 END)=m.IssueDetailID AND c.WorkPoint=m.WorkPoint
                                WHERE ISNULL(m.ApplyDetailID,ISNULL(m.PickID, c.SourceDetailID))='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                --根据原条码退料-备料表
                                UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
                                INNER JOIN ICSOutsourcingOrder y ON b.TransCode=y.OOCode AND b.WorkPoint=y.WorkPoint
                                INNER JOIN ICSOOPick x ON x.OODetailID=y.OODetailID AND x.WorkPoint=y.WorkPoint AND b.TransSequence = y.Sequence + '~' + x.Sequence
                                WHERE x.PickID='{0}' AND a.Identification='{1}' AND  a.ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                --根据原条码退料-申请单
                                UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
                                INNER JOIN ICSOApply z ON b.TransCode=z.ApplyCode  AND b.TransSequence=z.Sequence AND b.WorkPoint=z.WorkPoint
                                WHERE z.ApplyDetailID='{0}' AND a.Identification='{1}' AND  a.ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                --根据原条码退料-材料出库单
                                UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
                                INNER JOIN ICSOIssue m ON b.TransCode=m.IssueCode  AND b.TransSequence=m.Sequence AND b.WorkPoint=m.WorkPoint
                                LEFT JOIN ICSOOPick x ON m.PickID=x.PickID AND m.WorkPoint=x.WorkPoint
                                LEFT JOIN ICSOutsourcingOrder y ON x.OODetailID=y.OODetailID AND x.WorkPoint=y.WorkPoint
                                LEFT JOIN ICSOApply z ON m.ApplyDetailID=z.ApplyDetailID AND m.WorkPoint=z.WorkPoint
                                WHERE ISNULL(m.ApplyDetailID, m.PickID)='{0}' AND a.Identification='{1}' AND  a.ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //委外入库
                else if (TransType == TransTypeEnum.OutsourcingReceiveDoc.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                                INNER JOIN ICSOutsourcingOrder c ON b.TransCode=c.OOCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.OODetailID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //委外退货
                else if (TransType == TransTypeEnum.OutsourcingReturnBack.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSODeliveryNotice c ON a.TransCode=c.ODNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.ODNDetailID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND  c.ODNType='2' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //生产发料
                else if (TransType == TransTypeEnum.MOIssueDoc.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSMO y ON a.TransCode=y.MOCode AND a.WorkPoint=y.WorkPoint
                                INNER JOIN ICSMOPick x ON x.MODetailID=y.MODetailID AND a.TransSequence=y.Sequence+'~'+x.Sequence AND x.WorkPoint=y.WorkPoint
                                WHERE x.PickID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //生产退料
                else if (TransType == TransTypeEnum.MOIssueDocNegative.GetDescription()
                        || TransType == TransTypeEnum.MOIssueDocNegativeApply.GetDescription()
                        || TransType == TransTypeEnum.MOIssueDocNegativeIssue.GetDescription())
                {
                    ERPupdate = @"--根据退料单退料
                                UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                                INNER JOIN ICSMOApplyNegDetail c ON b.TransCode=c.ApplyNegCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
                                INNER JOIN ICSMOApplyNeg d ON c.ApplyNegCode=d.ApplyNegCode AND c.WorkPoint=d.WorkPoint
                                left JOIN ICSMOIssue m ON (CASE WHEN d.Type='3' THEN c.SourceDetailID ELSE 0 END)=m.IssueDetailID AND c.WorkPoint=m.WorkPoint
                                WHERE ISNULL(m.ApplyDetailID, ISNULL(m.PickID, c.SourceDetailID))='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                --根据原条码退料-备料表
                                UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
                                INNER JOIN ICSMO y ON b.TransCode=y.MOCode AND b.WorkPoint=y.WorkPoint
                                INNER JOIN ICSMOPick x ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint AND b.TransSequence = y.Sequence + '~' + x.Sequence
                                WHERE x.PickID='{0}' AND a.Identification='{1}' AND  a.ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                --根据原条码退料-申请单
                                UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
                                INNER JOIN ICSMOApply z ON b.TransCode=z.ApplyCode  AND b.TransSequence=z.Sequence AND b.WorkPoint=z.WorkPoint
                                WHERE z.ApplyDetailID='{0}' AND a.Identification='{1}' AND  a.ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                --根据原条码退料-材料出库单
                                UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSWareHouseLotInfoLog b ON a.LogID=b.ID AND a.WorkPoint=b.WorkPoint
                                INNER JOIN ICSMOIssue m ON b.TransCode=m.IssueCode  AND b.TransSequence=m.Sequence AND b.WorkPoint=m.WorkPoint
                                LEFT JOIN ICSMOPick x ON m.PickID=x.PickID AND m.WorkPoint=x.WorkPoint
                                LEFT JOIN ICSMO y ON x.MODetailID=y.MODetailID AND x.WorkPoint=y.WorkPoint
                                LEFT JOIN ICSMOApply z ON m.ApplyDetailID=z.ApplyDetailID AND m.WorkPoint=z.WorkPoint
                                WHERE ISNULL(m.ApplyDetailID, m.PickID)='{0}' AND a.Identification='{1}' AND  a.ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //生产入库
                else if (TransType == TransTypeEnum.ManufactureReceiveDoc.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                                INNER JOIN ICSMO c ON b.TransCode=c.MOCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.MODetailID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //开立的生产入库单
                else if (TransType == TransTypeEnum.ManufactureReceive.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                                INNER JOIN ICSManufactureReceive c ON b.TransCode=c.RCVCode AND b.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.RCVID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND c.Type='1' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //销售出库
                else if (TransType == TransTypeEnum.SalesShipmentDoc.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSSDN c ON a.TransCode=c.SDNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.SDNDetailID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND  c.Type='1' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //销售退货
                else if (TransType == TransTypeEnum.SalesShipmentDocNegative.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSSDN c ON a.TransCode=c.SDNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.SDNDetailID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND  c.Type='2' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }

                //返工工单
                else if (TransType == TransTypeEnum.ReWorkReceiveMo.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                                INNER JOIN ICSMO c ON b.TransCode=c.MOCode  AND b.WorkPoint=c.WorkPoint
                                INNER JOIN ICSMOPick d ON d.MODetailID=c.MODetailID  AND d.WorkPoint=c.WorkPoint and b.TransSequence=c.Sequence+'-'+d.Sequence
                                WHERE d.PickID='{3}' AND a.Identification='{1}' AND  ERPUpload='0'  AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //一步调拨
                else if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSTransfer c ON a.TransCode=c.TransferNO AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.TransferID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND  c.Type='1' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //调拨
                else if (TransType == TransTypeEnum.OneStepTransferDocIn.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSTransfer c ON a.TransCode=c.TransferNO AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.TransferID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND  c.Type='1' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //两步调出
                else if (TransType == TransTypeEnum.TwoStepTransferDocOut.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSOtherOut c ON a.TransCode=c.OutCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                INNER JOIN ICSTransfer d ON c.TransferDetailID=d.TransferDetailID AND c.WorkPoint=d.WorkPoint
                                WHERE c.OutID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //两步调入
                else if (TransType == TransTypeEnum.TwoStepTransferDocIn.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSOtherIn b ON a.TransCode=b.InCode AND a.TransSequence=b.Sequence AND a.WorkPoint=b.WorkPoint
                                INNER JOIN ICSTransfer c ON b.TransferDetailID=c.TransferDetailID AND b.WorkPoint=c.WorkPoint
                                WHERE b.InID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //销售退货-原条码
                else if (TransType == TransTypeEnum.SalesReturnBack.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSSDN c ON a.TransCode=c.SDNCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.SDNDetailID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND  c.Type='2' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //其他出库
                else if (TransType == TransTypeEnum.OtherOutDoc.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSOtherOut c ON a.TransCode=c.OutCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.OutID='{0}' AND a.Identification='{1}' AND  a.ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //其他入库
                else if (TransType == TransTypeEnum.OtherInDoc.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                                INNER JOIN ICSOtherIn c ON b.TransCode=c.InCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
                                WHERE c.InID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //拆卸单
                else if (TransType == TransTypeEnum.DisassemblyDoc.GetDescription())
                {
                    ERPupdate = @"UPDATE d set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                                INNER JOIN ICSDisassemblyDoc c ON b.TransCode=c.DABDOCCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
                                INNER JOIN ICSWareHouseLotInfoLog d ON b.TransCode=d.TransCode AND d.TransSequence='1' AND b.WorkPoint=d.WorkPoint
                                WHERE c.DABDOCID='{0}' AND a.Identification='{1}' AND  d.ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')

                                UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                                INNER JOIN ICSDisassemblyDoc c ON b.TransCode=c.DABDOCCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
                                WHERE c.DABDOCID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND  c.DABDOCType='2' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //领料申请单
                else if (TransType == TransTypeEnum.MOApply.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSMOApply c ON a.TransCode=c.ApplyCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.ApplyDetailID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //委外领料申请单
                else if (TransType == TransTypeEnum.OOApply.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSOApply c ON a.TransCode=c.ApplyCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.ApplyDetailID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //开立材料出库
                else if (TransType == TransTypeEnum.MOIssue.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSMOIssue c ON a.TransCode=c.IssueCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.IssueID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //开立委外材料出库
                else if (TransType == TransTypeEnum.OOIssue.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSOIssue c ON a.TransCode=c.IssueCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.IssueID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //开立红字入库单
                else if (TransType == TransTypeEnum.PurchaseReceive.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSPurchaseReceive c ON a.TransCode=c.RCVCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.RCVID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND c.Type='2' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //开立委外红字入库单
                else if (TransType == TransTypeEnum.OutsourcingReceiveDocNegative.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSOutsourcingReceive c ON a.TransCode=c.RCVCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.RCVID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND c.Type='2' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //借用
                else if (TransType == TransTypeEnum.BrrowDoc.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSBrrow c ON a.TransCode=c.BrrowCode AND a.TransSequence=c.Sequence AND a.WorkPoint=c.WorkPoint
                                WHERE c.BrrowDetailID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }
                //归还
                else if (TransType == TransTypeEnum.ReturnDoc.GetDescription())
                {
                    ERPupdate = @"UPDATE a set ERPID='{2}',ERPDetailID='{3}',ERPCode='{4}',ERPSequence='{5}',ERPUpload='1'
                                FROM ICSWareHouseLotInfoLog a
                                INNER JOIN ICSInventoryLotDetail b ON a.LotNo=b.LotNo AND a.WorkPoint=b.WorkPoint
                                INNER JOIN ICSReturn c ON b.TransCode=c.ReturnCode AND b.TransSequence=c.Sequence AND b.WorkPoint=c.WorkPoint
                                WHERE c.ReturnDetailID='{0}' AND a.Identification='{1}' AND  ERPUpload='0' AND (a.BusinessCode <> '31' and a.BusinessCode <> '32')
                                ";
                }

                ERPupdate = string.Format(ERPupdate, SourceDetailID, Identification, ID, DetailID, Code, Sequence);
                if (!DBHelper.ExecuteNonQuery(ERPupdate, cmd))
                {
                    throw new Exception(TransType + language.GetNameByCode("WMSAPIInfo175"));//"回写日志失败!");
                }
            }
            catch (Exception ex)
            {
                log.Debug(ex.ToString());
                log.Debug(TransType + Environment.NewLine + ERPupdate);
            }
        }

    }
}