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.

246 lines
14 KiB

4 days ago
  1. using NFine.Code;
  2. using NFine.Data.Extensions;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Data.Common;
  6. using System.Data;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using NFine.Domain._03_Entity.SRM;
  11. using NFine.Repository;
  12. using System.Security.Cryptography;
  13. namespace NFine.Application.SRM
  14. {
  15. public class RCVListApp : RepositoryFactory<ICSVendor>
  16. {
  17. public DataTable GetRcvLineSubGridJson(string queryJson, ref Pagination jqgridparam)
  18. {
  19. var queryParam = queryJson.ToJObject();
  20. List<DbParameter> parameter = new List<DbParameter>();
  21. string sqlU9 = "SELECT DBIpAddress,DBName FROM dbo.Sys_DataBase WHERE DBSourceName='ERP'";
  22. DataTable dtU9 = SqlHelper.GetDataTableBySql(sqlU9);
  23. string U9IP = dtU9.Rows[0]["DBIpAddress"].ToString();
  24. string DBName = dtU9.Rows[0]["DBName"].ToString();
  25. string sql = @"SELECT RCV.DOCNO cCode ,--到货单号
  26. A41.name cVenName,--
  27. po.DocNO cPOID ,--ID
  28. POL.DOCLINENO ivouchrowno,--
  29. A7.Name PurOper, --
  30. rcvl.ArrivedTime,--
  31. rcvl.RcvQtyTU, --
  32. Item.Code,
  33. Item.Name,
  34. D.Name AS InvUnit,
  35. rcvl.ConfirmedQtyTU,
  36. rcvl.FinallyPriceTC, --
  37. rcvl.ArriveQtyPU, --
  38. rcvl.DescFlexSegments_PubDescSeg14,--
  39. rcvl.DescFlexSegments_PubDescSeg13,--
  40. rcvl.DescFlexSegments_PubDescSeg12,--
  41. rcvl.TotalNetMnyTC iOriMoney,--
  42. rcvl.TotalTaxTC iOriTaxPrice,--
  43. rcvl.TotalMnyTC ioriSum, --
  44. pol.TotalRtnDeductQtyTU,
  45. rcvl.ArriveQtyPU-pol.TotalRtnDeductQtyTU as JSQty,
  46. CASE WHEN rcvl.ConfirmedQtyTU='0' AND ISNULL(rcsa.DocNO,'')='' THEN '' WHEN rcvl.ConfirmedQtyTU='0' AND ISNULL(rcsa.DocNO,'')<>'' THEN ''WHEN rcvl.RcvQtyTU=rcvl.ConfirmedQtyTU AND rcvl.ConfirmedQtyTU<>'0' THEN ''END ststuas
  47. ,case when srmpo.signBackstate=1 or ISNULL(srmpo.signBackstate,'')='' then '' WHEN srmpo.signBackstate=2 then ''WHEN srmpo.signBackstate=3 then ''WHEN srmpo.signBackstate=4 then '退' END as signBackstate
  48. FROM [{0}].{1}.dbo.PM_Receivement rcv
  49. LEFT JOIN [{0}].{1}.dbo.PM_RcvLine rcvl WITH(NOLOCK) ON rcv.id=rcvl.Receivement AND rcvl.SplitFlag IN (0,1)
  50. LEFT JOIN [{0}].{1}.dbo.PM_POLine pol WITH(NOLOCK) ON rcvl.SrcDoc_SrcDocLine_EntityID = pol.id
  51. LEFT JOIN [{0}].{1}.dbo.PM_PurchaseOrder po WITH(NOLOCK) ON po.ID=pol.PurchaseOrder
  52. LEFT JOIN [{0}].{1}.dbo.CBO_ItemMaster ii WITH(NOLOCK) ON ii.id=pol.ItemInfo_ItemID
  53. LEFT JOIN [{0}].{1}.dbo.CBO_Supplier sup WITH(NOLOCK) ON sup .ID=po.SUPPLIER_SUPPLIER
  54. LEFT JOIN [{0}].{1}.dbo.CBO_Supplier_Trl A41 ON ( sup.ID = A41.ID AND A41.SysMLFlag = 'zh-CN')
  55. left join [{0}].{1}.dbo.[CBO_ItemMaster] as Item on pol.[ItemInfo_ItemID] = Item.[ID]
  56. LEFT JOIN [{0}].{1}.dbo.[Base_UOM] AS C ON ( Item.[CostUOM] = C.[ID] )
  57. LEFT JOIN [{0}].{1}.dbo.[Base_UOM_Trl] AS D ON ( C.[ID] = D.[ID] AND D.SysMLFlag='zh-CN')
  58. left join [{0}].{1}.dbo.[CBO_Operators] as A6 on (po.PurOper = A6.[ID])
  59. left join [{0}].{1}.dbo.[CBO_Operators_Trl] as A7 on (A7.SysMlFlag = 'zh-CN') and (A6.[ID] = A7.[ID])
  60. LEFT JOIN [dbo].[ICSCANewDetail] rcsa ON rcsa.EATTRIBUTE1=rcvl.id AND rcsa.EATTRIBUTE2=RCV.DOCNO
  61. LEFT JOIN ICSPO_POmain srmpo ON srmpo.pocode=po.DocNO AND srmpo.porow=pol.DOCLINENO
  62. WHERE 1=1
  63. ";
  64. sql = string.Format(sql, U9IP, DBName);
  65. if (!string.IsNullOrWhiteSpace(queryJson))
  66. {
  67. if (!string.IsNullOrWhiteSpace(queryParam["cPOID"].ToString()))
  68. {
  69. sql += " and po.DocNO like '%" + queryParam["cPOID"].ToString() + "%' ";
  70. }
  71. if (!string.IsNullOrWhiteSpace(queryParam["cCode"].ToString()))
  72. {
  73. sql += " and RCV.DOCNO like '%" + queryParam["cCode"].ToString() + "%' ";
  74. }
  75. if (!string.IsNullOrWhiteSpace(queryParam["PurOper"].ToString()))
  76. {
  77. sql += " and po.PurOper like '%" + queryParam["PurOper"].ToString() + "%' ";
  78. }
  79. if (!string.IsNullOrWhiteSpace(queryParam["Code"].ToString()))
  80. {
  81. sql += " and Item.Code like '%" + queryParam["Code"].ToString() + "%' ";
  82. }
  83. if (!string.IsNullOrWhiteSpace(queryParam["BeginDate"].ToString()))
  84. {
  85. sql += " and rcvl.ArrivedTime >= '" + queryParam["BeginDate"].ToString() + "' ";
  86. }
  87. if (!string.IsNullOrWhiteSpace(queryParam["EndDate"].ToString()))
  88. {
  89. sql += " and rcvl.ArrivedTime <= '" + queryParam["EndDate"].ToString() + "' ";
  90. }
  91. if (!string.IsNullOrWhiteSpace(queryParam["IsReceive"].ToString()))
  92. {
  93. string IsReceive = queryParam["IsReceive"].ToString();
  94. if(IsReceive == "0")
  95. {
  96. }
  97. else if (IsReceive == "1")
  98. {
  99. sql += " and CASE WHEN rcvl.ConfirmedQtyTU='0' AND ISNULL(rcsa.DocNO,'')='' THEN '未对账' WHEN rcvl.ConfirmedQtyTU='0' AND ISNULL(rcsa.DocNO,'')<>'' THEN '对账中'WHEN rcvl.RcvQtyTU=rcvl.ConfirmedQtyTU AND rcvl.ConfirmedQtyTU<>'0' THEN '对账完成'END ='未对账' ";
  100. }
  101. else if (IsReceive == "2")
  102. {
  103. sql += " and CASE WHEN rcvl.ConfirmedQtyTU='0' AND ISNULL(rcsa.DocNO,'')='' THEN '未对账' WHEN rcvl.ConfirmedQtyTU='0' AND ISNULL(rcsa.DocNO,'')<>'' THEN '对账中'WHEN rcvl.RcvQtyTU=rcvl.ConfirmedQtyTU AND rcvl.ConfirmedQtyTU<>'0' THEN '对账完成'END ='对账中' ";
  104. }
  105. else if (IsReceive == "3")
  106. {
  107. sql += " and CASE WHEN rcvl.ConfirmedQtyTU='0' AND ISNULL(rcsa.DocNO,'')='' THEN '未对账' WHEN rcvl.ConfirmedQtyTU='0' AND ISNULL(rcsa.DocNO,'')<>'' THEN '对账中'WHEN rcvl.RcvQtyTU=rcvl.ConfirmedQtyTU AND rcvl.ConfirmedQtyTU<>'0' THEN '对账完成'END ='对账完成' ";
  108. }
  109. else
  110. {
  111. sql += " and CASE WHEN rcvl.ConfirmedQtyTU='0' AND ISNULL(rcsa.DocNO,'')='' THEN '未对账' WHEN rcvl.ConfirmedQtyTU='0' AND ISNULL(rcsa.DocNO,'')<>'' THEN '对账中'WHEN rcvl.RcvQtyTU=rcvl.ConfirmedQtyTU AND rcvl.ConfirmedQtyTU<>'0' THEN '对账完成'END in('未对账','对账中') ";
  112. }
  113. }
  114. if (!string.IsNullOrWhiteSpace(queryParam["VenName"].ToString()))
  115. {
  116. sql += " and A41.name like '%" + queryParam["VenName"].ToString() + "%' ";
  117. }
  118. if (!string.IsNullOrWhiteSpace(queryParam["ReleaseState"].ToString()))
  119. {
  120. string ReleaseState = queryParam["ReleaseState"].ToString();
  121. if (ReleaseState == "1")
  122. sql += " and srmpo.SignBackState = '1'";
  123. else if (ReleaseState == "2")
  124. sql += " and srmpo.SignBackState = '2'";
  125. else if (ReleaseState == "3")
  126. sql += " and srmpo.SignBackState = '3'";
  127. else if (ReleaseState == "0")
  128. sql += " and ISNULL(srmpo.signBackstate,'0') = '0'";
  129. else if (ReleaseState == "4")
  130. {
  131. sql += " and ISNULL(srmpo.signBackstate,'') = '4'";
  132. }
  133. }
  134. }
  135. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  136. {
  137. sql += " and sup.code='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  138. }
  139. return Repository().FindTablePageBySql(sql.ToString(), parameter.ToArray(), ref jqgridparam);
  140. }
  141. public DataTable ExportRcvLineAll(string cPOID, string cCode, string PurOper, string Code, string BeginDate, string EndDate, string IsReceive, string VenName)
  142. {
  143. string ParentId = SqlHelper.Organize_F_ParentId(NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode);
  144. //var queryParam = queryJson.ToJObject();
  145. List<DbParameter> parameter = new List<DbParameter>();
  146. string sqlU9 = "SELECT DBIpAddress,DBName FROM dbo.Sys_DataBase WHERE DBSourceName='ERP'";
  147. DataTable dtU9 = SqlHelper.GetDataTableBySql(sqlU9);
  148. string U9IP = dtU9.Rows[0]["DBIpAddress"].ToString();
  149. string DBName = dtU9.Rows[0]["DBName"].ToString();
  150. string sql = @"SELECT RCV.DOCNO 入库单号 ,--到货单号
  151. case when srmpo.signBackstate=1 or ISNULL(srmpo.signBackstate,'')='' then '' WHEN srmpo.signBackstate=2 then ''WHEN srmpo.signBackstate=3 then ''WHEN srmpo.signBackstate=4 then '退' END as ,
  152. A41.name ,--
  153. po.DocNO ,--ID
  154. POL.DOCLINENO ,--
  155. A7.Name , --
  156. rcvl.ArrivedTime ,--
  157. rcvl.RcvQtyTU , --
  158. Item.Code ,
  159. Item.Name ,
  160. D.Name AS ,
  161. rcvl.ConfirmedQtyTU ,
  162. rcvl.FinallyPriceTC , --
  163. rcvl.ArriveQtyPU , --
  164. rcvl.DescFlexSegments_PubDescSeg14 ,--
  165. rcvl.DescFlexSegments_PubDescSeg13 ,--
  166. rcvl.DescFlexSegments_PubDescSeg12 ,--
  167. rcvl.TotalMnyTC , --
  168. rcvl.TotalNetMnyTC ,--
  169. rcvl.TotalTaxTC ,--
  170. CASE WHEN rcvl.ConfirmedQtyTU='0' AND ISNULL(rcsa.DocNO,'')='' THEN '' WHEN rcvl.ConfirmedQtyTU='0' AND ISNULL(rcsa.DocNO,'')<>'' THEN ''WHEN rcvl.RcvQtyTU=rcvl.ConfirmedQtyTU AND rcvl.ConfirmedQtyTU<>'0' THEN ''END
  171. FROM [{0}].{1}.dbo.PM_Receivement rcv
  172. LEFT JOIN [{0}].{1}.dbo.PM_RcvLine rcvl WITH(NOLOCK) ON rcv.id=rcvl.Receivement AND rcvl.SplitFlag IN (0,1)
  173. LEFT JOIN [{0}].{1}.dbo.PM_POLine pol WITH(NOLOCK) ON rcvl.SrcDoc_SrcDocLine_EntityID = pol.id
  174. LEFT JOIN [{0}].{1}.dbo.PM_PurchaseOrder po WITH(NOLOCK) ON po.ID=pol.PurchaseOrder
  175. LEFT JOIN [{0}].{1}.dbo.CBO_ItemMaster ii WITH(NOLOCK) ON ii.id=pol.ItemInfo_ItemID
  176. LEFT JOIN [{0}].{1}.dbo.CBO_Supplier sup WITH(NOLOCK) ON sup .ID=po.SUPPLIER_SUPPLIER
  177. LEFT JOIN [{0}].{1}.dbo.CBO_Supplier_Trl A41 ON ( sup.ID = A41.ID AND A41.SysMLFlag = 'zh-CN')
  178. left join [{0}].{1}.dbo.[CBO_ItemMaster] as Item on pol.[ItemInfo_ItemID] = Item.[ID]
  179. LEFT JOIN [{0}].{1}.dbo.[Base_UOM] AS C ON ( Item.[CostUOM] = C.[ID] )
  180. LEFT JOIN [{0}].{1}.dbo.[Base_UOM_Trl] AS D ON ( C.[ID] = D.[ID] AND D.SysMLFlag='zh-CN')
  181. left join [{0}].{1}.dbo.[CBO_Operators] as A6 on (po.PurOper = A6.[ID])
  182. left join [{0}].{1}.dbo.[CBO_Operators_Trl] as A7 on (A7.SysMlFlag = 'zh-CN') and (A6.[ID] = A7.[ID])
  183. LEFT JOIN [dbo].[ICSCANewDetail] rcsa ON rcsa.EATTRIBUTE1=rcvl.id AND rcsa.EATTRIBUTE2=RCV.DOCNO
  184. LEFT JOIN ICSPO_POmain srmpo ON srmpo.pocode=po.DocNO AND srmpo.porow=pol.DOCLINENO
  185. WHERE 1=1";
  186. sql = string.Format(sql, U9IP, DBName);
  187. if (!string.IsNullOrWhiteSpace(cPOID))
  188. sql += " and po.DocNO like '%" + cPOID + "%'";
  189. if (!string.IsNullOrWhiteSpace(cCode))
  190. sql += " and RCV.DOCNO like '%" + cCode + "%'";
  191. if (!string.IsNullOrWhiteSpace(PurOper))
  192. sql += " and po.PurOper like '%" + PurOper + "%'";
  193. if (!string.IsNullOrWhiteSpace(Code))
  194. sql += " and Item.Code like '%" + Code + "%'";
  195. if (!string.IsNullOrWhiteSpace(BeginDate))
  196. sql += " and rcvl.ArrivedTime >= '" + BeginDate + "'";
  197. if (!string.IsNullOrWhiteSpace(BeginDate))
  198. sql += " and rcvl.ArrivedTime <= '" + EndDate + "'";
  199. if (!string.IsNullOrWhiteSpace(IsReceive))
  200. {
  201. if (IsReceive == "0")
  202. {
  203. }
  204. else if (IsReceive == "1")
  205. {
  206. sql += " and CASE WHEN rcvl.ConfirmedQtyTU='0' AND ISNULL(rcsa.DocNO,'')='' THEN '未对账' WHEN rcvl.ConfirmedQtyTU='0' AND ISNULL(rcsa.DocNO,'')<>'' THEN '对账中'WHEN rcvl.RcvQtyTU=rcvl.ConfirmedQtyTU AND rcvl.ConfirmedQtyTU<>'0' THEN '对账完成'END ='未对账' ";
  207. }
  208. else if (IsReceive == "2")
  209. {
  210. sql += " and CASE WHEN rcvl.ConfirmedQtyTU='0' AND ISNULL(rcsa.DocNO,'')='' THEN '未对账' WHEN rcvl.ConfirmedQtyTU='0' AND ISNULL(rcsa.DocNO,'')<>'' THEN '对账中'WHEN rcvl.RcvQtyTU=rcvl.ConfirmedQtyTU AND rcvl.ConfirmedQtyTU<>'0' THEN '对账完成'END ='对账中' ";
  211. }
  212. else if (IsReceive == "3")
  213. {
  214. sql += " and CASE WHEN rcvl.ConfirmedQtyTU='0' AND ISNULL(rcsa.DocNO,'')='' THEN '未对账' WHEN rcvl.ConfirmedQtyTU='0' AND ISNULL(rcsa.DocNO,'')<>'' THEN '对账中'WHEN rcvl.RcvQtyTU=rcvl.ConfirmedQtyTU AND rcvl.ConfirmedQtyTU<>'0' THEN '对账完成'END ='对账完成' ";
  215. }
  216. else
  217. {
  218. sql += " and CASE WHEN rcvl.ConfirmedQtyTU='0' AND ISNULL(rcsa.DocNO,'')='' THEN '未对账' WHEN rcvl.ConfirmedQtyTU='0' AND ISNULL(rcsa.DocNO,'')<>'' THEN '对账中'WHEN rcvl.RcvQtyTU=rcvl.ConfirmedQtyTU AND rcvl.ConfirmedQtyTU<>'0' THEN '对账完成'END in('未对账','对账中') ";
  219. }
  220. }
  221. if (!string.IsNullOrWhiteSpace(VenName))
  222. sql += " and A41.name like '%" + VenName + "%'";
  223. if (NFine.Code.OperatorProvider.Provider.GetCurrent().RoleEnCode == "Vendor")
  224. {
  225. sql += " and sup.code='" + NFine.Code.OperatorProvider.Provider.GetCurrent().UserCode + "'";
  226. }
  227. DataTable dt = SqlHelper.GetDataTableBySql(sql);
  228. return dt;
  229. }
  230. }
  231. }