You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
387 lines
18 KiB
387 lines
18 KiB
using ICSSoft.Entity;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
using Newtonsoft.Json;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using ICSSoft.Common;
|
|
|
|
namespace ICSSoft.DataProject
|
|
{
|
|
public class CreatePuArrivalVouch
|
|
{
|
|
private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
|
private static string connString = System.Configuration.ConfigurationManager.AppSettings["ERPConnStr"];
|
|
private static string ERPDB = System.Configuration.ConfigurationManager.AppSettings["ERPDB"];
|
|
private static string Type = System.Configuration.ConfigurationManager.AppSettings["Type"];
|
|
//参数示例
|
|
//[{
|
|
// "ASNNO": "DN510852000001",
|
|
// "WHCode": "11",
|
|
// "User": "CC001",
|
|
// "MTime": "2021-08-26 17:20:13",
|
|
// "details": [
|
|
// {
|
|
// "LOTNO": "PO200219004100005",
|
|
// "ReceiveQty": "2"
|
|
// },{
|
|
// "LOTNO": "PO200219004100001",
|
|
// "ReceiveQty": "1"
|
|
// }
|
|
// ]
|
|
//}]
|
|
//返回参数
|
|
//{
|
|
//"Success": true,
|
|
//"Message": "接口调用成功!",
|
|
//"Data": null
|
|
//}
|
|
public string Get(List<ICSPUArrivalVouch> infos)
|
|
{
|
|
List<ICSPUArrivalVouch> szJson = new List<ICSPUArrivalVouch>();
|
|
DataTable dt = null;
|
|
string json = "";
|
|
if (infos.Count <= 0)
|
|
{
|
|
throw new Exception("传送数据为空!");
|
|
}
|
|
string res = string.Empty;
|
|
SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
foreach (ICSPUArrivalVouch info in infos)
|
|
{
|
|
if (info.MTime < new DateTime(2000, 01, 01))
|
|
throw new Exception("请输入正确的操作时间:" + info.MTime);
|
|
sql = @"SELECT A.ID,A.cCode,A. cVenCode ,D.CVENNAME,A.cDepCode,C.CDEPNAME, A.CMAKER,A.CMAKETIME,A.CVERIFIER,A.CAUDITTIME,
|
|
B.Autoid ,B.irowno ,B.IQUANTITY ,B.INUM,B.cInvCode ,B.iCost ,B.irejectautoid
|
|
FROM PU_ArrivalVouch A
|
|
INNER JOIN PU_ArrivalVouchs B ON A.ID=B.ID
|
|
INNER JOIN DEPARTMENT C ON A.CDEPCODE=C.CDEPCODE
|
|
INNER JOIN VENDOR D ON A.CVENCODE=D.CVENCODE WHERE 1=1 and a.iBillType=2 and b.IQUANTITY<0 ";
|
|
if (!string.IsNullOrWhiteSpace(info.RJTCode))
|
|
{
|
|
sql += " and a.cCode='{0}'";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(info.MTime.ToString()))
|
|
{
|
|
sql += " and ISNULL(A.dclosedate,ISNULL(A.caudittime ,ISNULL(A.cAuditTime, ISNULL(A.cModifyTime, A.cMakeTime))))>='{1}'";
|
|
}
|
|
if (!string.IsNullOrWhiteSpace(info.User))
|
|
{
|
|
sql += "and a.CMAKER='{2}'";
|
|
}
|
|
sql = string.Format(sql, info.RJTCode, info.MTime, info.User);
|
|
dt = DBHelper.SQlReturnData(sql, cmd);
|
|
json = JsonConvert.SerializeObject(dt);
|
|
if (dt.Rows.Count <= 0 || dt == null)
|
|
throw new Exception("拒收单单:" + info.RJTCode + ",无信息!");
|
|
|
|
}
|
|
cmd.Transaction.Commit();
|
|
return json;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 回写U8到货单,
|
|
/// </summary>
|
|
/// <param name="cmd"></param>
|
|
/// <param name="Lotnos"></param>
|
|
/// <param name="info"></param>
|
|
public string CreatePUArrive(List<ICSPUArrivalVouch> Bills)
|
|
{
|
|
string msg = "";
|
|
bool ResultFlag = false;
|
|
int num = 0;
|
|
foreach (ICSPUArrivalVouch head in Bills)
|
|
{
|
|
num = head.Vouchs.Count();
|
|
}
|
|
SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
try
|
|
{
|
|
if (Bills.Count <= 0)
|
|
{
|
|
throw new Exception("传送数据为空!");
|
|
}
|
|
bool isNG = false;
|
|
LogInfo(Bills);
|
|
DateTime dVDate = new DateTime();
|
|
DateTime dPDate = new DateTime();
|
|
foreach (ICSPUArrivalVouch head in Bills)
|
|
{
|
|
foreach (ICSPUArrivalVouchs body in head.Vouchs)
|
|
{
|
|
if (body.Quantity > 0)
|
|
{
|
|
isNG = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (isNG)
|
|
{
|
|
int sum = 0;
|
|
foreach (ICSPUArrivalVouch head in Bills)
|
|
{
|
|
string sql = "";
|
|
VouchKey key = new VouchKey();
|
|
//取得out库单的默认显示模版
|
|
Dictionary<string, int> dic = DBHelper.GetAllCode("" + ERPDB + "", "PuArrival", "" + num + "");
|
|
int iFatherId = Convert.ToInt32(dic["iFatherId"].ToString());
|
|
int iChildId = Convert.ToInt32(dic["iChildId"].ToString());
|
|
DateTime date = DateTime.Now;
|
|
string iBaseCodeLen = DBHelper.GetAllRDCode("26", "" + date + "", "admin");
|
|
|
|
#region 主表
|
|
sql = @"INSERT INTO PU_ArrivalVouch
|
|
(iVTid, ID, cCode, cPTCode, dDate, cVenCode, cDepCode, cPersonCode, cPayCode, cexch_name, iExchRate, iTaxRate, cMemo, cBusType, cMaker, bNegative,
|
|
iDiscountTaxType, iBillType, cMakeTime, cAuditDate, caudittime, cverifier, iverifystateex, IsWfControlled, iflowid, iPrintCount, cpocode)
|
|
SELECT @iVTid, @ID, @cCode, cPTCode, CONVERT(NVARCHAR(10), GETDATE(), 23), cVenCode, cDepCode, cPersonCode, cPayCode, cexch_name, iExchRate, iTaxRate, cMemo, '普通采购', @User, 1,
|
|
iDiscountTaxType, 2, GETDATE(), CONVERT(NVARCHAR(10), GETDATE(), 23), GETDATE(), @User, 2, 0, 0, iPrintCount, null
|
|
FROM PU_ArrivalVouch WHERE 1=1 AND ID = @headID ";
|
|
cmd.Parameters.Clear();
|
|
cmd.Parameters.Add(new SqlParameter("@iVTid", iChildId));
|
|
cmd.Parameters.Add(new SqlParameter("@ID", iFatherId));
|
|
cmd.Parameters.Add(new SqlParameter("@cCode", iBaseCodeLen));
|
|
cmd.Parameters.Add(new SqlParameter("@User", head.User));
|
|
cmd.Parameters.Add(new SqlParameter("@headID", head.ID));
|
|
cmd.CommandText = sql;
|
|
try
|
|
{
|
|
int count = cmd.ExecuteNonQuery();
|
|
if (count <= 0)
|
|
{
|
|
log.Error("生成采购拒收单表头失败,受影响行数<=0;");
|
|
throw new Exception("生成采购拒收单表头失败,受影响行数<=0;");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error("生成采购拒收单表头失败!到货单ID:" + head.ID + ";异常:" + ex.Message + ";SQL:\r\n" + sql, ex);
|
|
throw new Exception("生成采购拒收单表头失败!到货单ID:" + head.ID + ";异常:" + ex.Message + ";SQL:\r\n" + sql, ex);
|
|
}
|
|
#endregion
|
|
|
|
#region 表体
|
|
foreach (ICSPUArrivalVouchs body in head.Vouchs)
|
|
{
|
|
iChildId -= 1;
|
|
sql = @"INSERT INTO PU_ArrivalVouchs
|
|
(Autoid, ID, cInvCode, iQuantity, iOriCost, iOriTaxCost, iOriMoney, iOriTaxPrice, iOriSum, iCost, iMoney, iTaxPrice, iSum, iTaxRate,
|
|
iPOsID, fValidInQuan, fRealQuantity, fValidQuantity, fRetQuantity, fInValidInQuan, bGsp, fValidNum, fValidInNum, fRealNum, bTaxCost,
|
|
SoType, fInvalidInNum, iinvexchrate, cordercode, RejectSource, iExpiratDateCalcu, iordertype, ivouchrowno, bgift,
|
|
cFree1, cFree2, cFree3, cFree4, cFree5, cFree6, cFree7, cFree8,
|
|
cBatch, cDefine37, fKPQuantity, finValidQuantity, fRefuseQuantity, iProductType,bexigency,inum,iCorId,carrivalcode )
|
|
SELECT @Autoid, @ID, @cInvCode, @iQuantity,pd.iUnitPrice,pd.iTaxPrice,round((pd.iTaxPrice*@iQuantity)/(1+pd.iPerTaxRate/100),2),
|
|
round(pd.iTaxPrice*@iQuantity,2)-round((pd.iTaxPrice*@iQuantity)/(1+pd.iPerTaxRate/100),2),round(pd.iTaxPrice*@iQuantity,2),round((pd.iTaxPrice/(1+pd.iPerTaxRate/100)*b.nflat),2),
|
|
round(round((pd.iTaxPrice*@iQuantity)/(1+pd.iPerTaxRate/100),2)*b.nflat,2),
|
|
round((round(pd.iTaxPrice*@iQuantity,2)-round((pd.iTaxPrice*@iQuantity)/(1+pd.iPerTaxRate/100),2))*b.nflat,2),round(round(pd.iTaxPrice*3402,2)*b.nflat,2),pd.iPerTaxRate,
|
|
pd.ID, 0, @iQuantity, @iQuantity, 0, 0, 0, null, null, null, 1,
|
|
0, null, 0, b.cPOID, 0, 0, 0, @ivouchrowno, 0,
|
|
pd.cFree1, pd.cFree2, pd.cFree3, pd.cFree4, pd.cFree5, pd.cFree6, pd.cFree7, pd.cFree8,
|
|
@Batch, @cDefine37, null, null, null, null, null,0,a.Autoid,c.cCode
|
|
FROM dbo.PU_ArrivalVouchs a LEFT JOIN dbo.PO_Podetails pd ON a.iPOsID= pd.ID
|
|
INNER JOIN dbo.PO_Pomain b ON pd.POID=b.POID
|
|
INNER JOIN dbo.PU_ArrivalVouch c ON a.ID=c.ID where a.Autoid='" + body.DNDetailID + "'";
|
|
cmd.Parameters.Clear();
|
|
cmd.Parameters.Add(new SqlParameter("@Autoid", iChildId));
|
|
cmd.Parameters.Add(new SqlParameter("@ID", iFatherId));
|
|
cmd.Parameters.Add(new SqlParameter("@cInvCode", body.InvCode));
|
|
cmd.Parameters.Add(new SqlParameter("@iQuantity", -body.Quantity));
|
|
cmd.Parameters.Add(new SqlParameter("@ivouchrowno", body.Sequence));
|
|
cmd.Parameters.Add(new SqlParameter("@Batch", ""));
|
|
cmd.Parameters.Add(new SqlParameter("@cDefine37", DateTime.Now.Date.AddDays(1 - DateTime.Now.Day).AddMonths(1).AddSeconds(-1)));
|
|
cmd.CommandText = sql;
|
|
try
|
|
{
|
|
int count = cmd.ExecuteNonQuery();
|
|
if (count <= 0)
|
|
{
|
|
log.Error("生成采购拒收单表体失败,受影响行数<=0;");
|
|
throw new Exception("生成采购拒收单表体失败,受影响行数<=0;");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
log.Error("生成采购拒收单表体失败!采购到货单ID:" + head.ID + ";异常:" + ex.Message + ";SQL:\r\n" + sql, ex);
|
|
throw new Exception("生成采购拒收单表体失败!采购到货单ID:" + head.ID + ";异常:" + ex.Message + ";SQL:\r\n" + sql, ex);
|
|
}
|
|
|
|
sql = string.Format(@"update pd set pd.fPoRefuseQuantity = isnull(fPoValidQuantity,0)+{0}
|
|
from dbo.PU_ArrivalVouchs a LEFT JOIN dbo.PO_Podetails pd ON a.iPOsID= pd.ID
|
|
INNER JOIN dbo.PO_Pomain b ON pd.POID=b.POID
|
|
INNER JOIN dbo.PU_ArrivalVouch c ON a.ID=c.ID where a.Autoid='" + body.DNDetailID + "' ", body.Quantity);
|
|
cmd.CommandText = sql;
|
|
cmd.ExecuteNonQuery();
|
|
}
|
|
#endregion
|
|
|
|
}
|
|
}
|
|
cmd.Transaction.Commit();
|
|
ResultFlag = true;
|
|
return msg;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
|
|
public string Approve(List<ICSPUArrivalVouch> infos)
|
|
{
|
|
List<ICSPUArrivalVouch> szJson = new List<ICSPUArrivalVouch>();
|
|
DataTable dt = null;
|
|
string json = "";
|
|
if (infos.Count <= 0)
|
|
{
|
|
throw new Exception("传送数据为空!");
|
|
}
|
|
string res = string.Empty;
|
|
SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
foreach (ICSPUArrivalVouch info in infos)
|
|
{
|
|
if (info.MTime < new DateTime(2000, 01, 01))
|
|
throw new Exception("请输入正确的操作时间:" + info.MTime);
|
|
sql = @"UPDATE PU_ArrivalVouch SET cVerifier ='" + info.User + @"' ,
|
|
cAuditTime=CONVERT(VARCHAR(50),GETDATE(),112),cAuditDate=GETDATE() WHERE ID='{0}'";
|
|
sql = string.Format(sql, info.ID);
|
|
DBHelper.CmdExecuteNonQuery(sql, cmd, "未查询到对应数据!");
|
|
}
|
|
cmd.Transaction.Commit();
|
|
return json;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 删除请购单
|
|
/// </summary>
|
|
/// <param name="infos"></param>
|
|
/// <returns></returns>
|
|
public string Delete(List<ICSPUArrivalVouch> infos)
|
|
{
|
|
List<ICSPUArrivalVouch> szJson = new List<ICSPUArrivalVouch>();
|
|
if (infos.Count <= 0)
|
|
{
|
|
throw new Exception("传送数据为空!");
|
|
}
|
|
string res = string.Empty;
|
|
SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
|
|
conn.Open();
|
|
SqlTransaction sqlTran = conn.BeginTransaction();
|
|
SqlCommand cmd = new SqlCommand();
|
|
cmd.Transaction = sqlTran;
|
|
cmd.Connection = conn;
|
|
try
|
|
{
|
|
string sql = string.Empty;
|
|
foreach (ICSPUArrivalVouch info in infos)
|
|
{
|
|
if (info.MTime < new DateTime(2000, 01, 01))
|
|
throw new Exception("请输入正确的操作时间:" + info.MTime);
|
|
sql = @" DELETE PU_AppVouch WHERE ID={0}";
|
|
sql = string.Format(sql, info.ID);
|
|
DBHelper.CmdExecuteNonQuery(sql, cmd, "未查询到对应数据!");
|
|
}
|
|
cmd.Transaction.Commit();
|
|
return res;
|
|
;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
cmd.Transaction.Rollback();
|
|
log.Error(ex.Message);
|
|
throw new Exception(ex.Message);
|
|
}
|
|
finally
|
|
{
|
|
if (conn.State == ConnectionState.Open)
|
|
{
|
|
conn.Close();
|
|
}
|
|
conn.Dispose();
|
|
}
|
|
}
|
|
/// <summary>
|
|
///
|
|
/// 记录日志
|
|
/// </summary>
|
|
/// <param name="Bills"></param>
|
|
private void LogInfo(List<ICSPUArrivalVouch> Bills)
|
|
{
|
|
string HeadList = string.Empty;
|
|
string BodyList = string.Empty;
|
|
foreach (ICSPUArrivalVouch head in Bills)
|
|
{
|
|
HeadList += "\r\n 表头主键ID:" + head.ID + ",用户:" + head.User;
|
|
foreach (ICSPUArrivalVouchs body in head.Vouchs)
|
|
{
|
|
BodyList += "\r\n 表体主键ID: " + body.DNDetailID + ",数量:" + body.Quantity;
|
|
}
|
|
}
|
|
log.Info(HeadList);
|
|
log.Info(BodyList);
|
|
}
|
|
}
|
|
}
|