销售出库单发票合并打印

This commit is contained in:
PastSaid
2023-12-10 03:58:57 +08:00
parent c4fceda660
commit 32b11a74e0
8 changed files with 202 additions and 96 deletions

View File

@@ -5,6 +5,7 @@ using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.List.PlugIn;
using Kingdee.BOS.Core.Validation;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.TCP;
using Kingdee.BOS.Util;
using Newtonsoft.Json;
using SAL_OUTSTOCK.Request;
@@ -72,17 +73,24 @@ namespace SAL_OUTSTOCK
var orgId = 0L;
var list = this.ListView.SelectedRowsInfo;
var orgIdList = list.Select(x => x.MainOrgId).Distinct();
if (orgIdList.Count() == 1)
if (orgIdList.Any())
{
orgId = orgIdList.First();
if (orgId != 101542)
DoIssueAnInvoice2List(FPLXDM, orgId);
if (orgIdList.Count() == 1)
{
opResult = new OperationResult();
var checkId = 101542L;
orgId = orgIdList.First();
checkId = orgId;
if (orgId == checkId)
DoIssueAnInvoice2List(FPLXDM, orgId);
else
this.View.ShowMessage("此功能未开放!如有需要请联系管理员!");
}
else
this.View.ShowMessage("此功能未开放!如有需要请联系管理员!");
}
else
{
this.View.ShowMessage("选择的单据的组织不统一!");
{
this.View.ShowErrMessage("选择的单据的组织不统一!");
}
}
}
_doingButtonFlag = false;
@@ -99,29 +107,30 @@ namespace SAL_OUTSTOCK
public string ListMergeInv_FPKJ(string FPLXDM, DynamicObject invoiceInfo)
{
var list = this.ListView.SelectedRowsInfo;
var fidList = list.Select(x => x.FormID).Distinct();
var fidList = list.Select(x => x.PrimaryKeyValue).Distinct();
//var sHeadInfo = this.View.Model.GetEntityDataObject(subHeadEntity, 0);
var result = new GP_FPKJ();
var fpkj = result.FPKJ = new REQUEST_COMMON_FPKJ();
var headSql = $@"SELECT
ID,APPLYID,APPLYNAME,BILLALLAMOUNT,BILLAMOUNT,BILLTAXAMOUNT,
CUSTID,CUSTNAME,INVOICETITLE,
INVOICEBANKNAME,INVOICEBANKACCOUNT,FTAXREGISTERCODE,SOCIALCRECODE,INVOICETEL,INVOICEADDRESS
FROM V_OUTSTOCKINVINFO_HEAD
var headSql = $@"
SELECT
ID,DOCUMENTSTATUS,APPLYID,APPLYNAME,BILLALLAMOUNT,BILLAMOUNT,BILLTAXAMOUNT,BILLNO
CUSTID,CUSTNAME,INVOICETITLE,INVOICEBANKNAME,INVOICEBANKACCOUNT,
TAXREGISTERCODE,SOCIALCRECODE,INVOICETEL,INVOICEADDRESS
FROM
V_INVINFO_OUTSTOCK
WHERE ID IN ({string.Join(",", fidList)})
";
var sHeadInfos = DBUtils.ExecuteDynamicObject(this.Context, $"/*dialect*/{headSql}");
var sHeadInfo = sHeadInfos[0];
#region
#region
var sHeadInfos = DBUtils.ExecuteDynamicObject(this.Context, $"/*dialect*/{headSql}");
var custIds = sHeadInfos.Select(x => x["CUSTID"].Long2Int()).Distinct();
if (custIds.Count() > 1)
if (custIds.Count() != 1)
opResult.OperateResult.Add(new OperateResult
{
Name = "客户信息",
@@ -130,7 +139,7 @@ WHERE ID IN ({string.Join(",", fidList)})
});
var applyIds = sHeadInfos.Select(x => x["APPLYID"].Long2Int()).Distinct();
if (applyIds.Count() > 1)
if (applyIds.Count() != 1)
opResult.OperateResult.Add(new OperateResult
{
Name = "申领单位",
@@ -138,6 +147,31 @@ WHERE ID IN ({string.Join(",", fidList)})
SuccessStatus = false
});
if (applyIds.Any() && applyIds.First() == 0)
opResult.OperateResult.Add(new OperateResult
{
Name = "申领单位",
Message = "选择的开票数据申领单位不能为空!",
SuccessStatus = false
});
var sheadInfos2 = sHeadInfos.Where(x => !x["DOCUMENTSTATUS"].ToString().Trim().Equals("C"));
if (sheadInfos2 != null && sheadInfos2.Any())
{
foreach (var item in sheadInfos2)
{
opResult.OperateResult.Add(new OperateResult
{
Name = item["BILLNO"].ToString(),
Message = $"{item["BILLNO"]}该订单未审核完毕!",
SuccessStatus = false
});
}
}
if (opResult.OperateResult.Any())
throw new Exception("检验信息");
fpkj.FPQQLSH = $"{invoiceInfo["FFIRMCODE"]}{DateTime.Now.ToString("yyyyMMddHHmm")}{invoiceInfo["FSERIALNUMBER"]}";
fpkj.FPLXDM = FPLXDM;
@@ -170,25 +204,18 @@ WHERE ID IN ({string.Join(",", fidList)})
fpkj.KPR = invoiceInfo["FDRAWER"].ToString();
////申领单位
//var applicant = this.View.Model.GetValue("F_QNV_Base1") as DynamicObject;
//var deptMulti = applicant["MultiLanguageText"] as DynamicObjectCollection;
fpkj.BZ = sHeadInfo["APPLYNAME"].ToString();
#endregion
#region ()
var sHeadInfo = sHeadInfos[0];
fpkj.BZ = sHeadInfo["APPLYNAME"].ToString();
fpkj.GMF_MC = (sHeadInfo["INVOICETITLE"].IsNullOrEmpty() ? (sHeadInfo["CUSTNAME"].IsNullOrEmpty() ? "" : sHeadInfo["CUSTNAME"]) : sHeadInfo["INVOICETITLE"]).ToString();
//纳税人识别号/统一社会信用代码
fpkj.GMF_NSRSBH = (sHeadInfo["SOCIALCRECODE"].IsNullOrEmpty() ? (sHeadInfo["FTAXREGISTERCODE"].IsNullOrEmpty() ? "" : sHeadInfo["FTAXREGISTERCODE"]) : sHeadInfo["SOCIALCRECODE"]).ToString();
fpkj.GMF_NSRSBH = (sHeadInfo["SOCIALCRECODE"].IsNullOrEmpty() ? (sHeadInfo["TAXREGISTERCODE"].IsNullOrEmpty() ? "" : sHeadInfo["TAXREGISTERCODE"]) : sHeadInfo["SOCIALCRECODE"]).ToString();
fpkj.GMF_DZDH = $"{sHeadInfo["INVOICEADDRESS"]} {sHeadInfo["INVOICETEL"]}";
fpkj.GMF_YHZH = $"{sHeadInfo["INVOICEBANKNAME"]} {sHeadInfo["INVOICEBANKACCOUNT"]}";
if (fpkj.GMF_MC == string.Empty)
if (fpkj.GMF_MC.IsNullOrEmptyOrWhiteSpace())
opResult.OperateResult.Add(new OperateResult
{
Name = "客户信息",
@@ -196,7 +223,7 @@ WHERE ID IN ({string.Join(",", fidList)})
SuccessStatus = false
});
if (fpkj.GMF_NSRSBH == string.Empty)
if (fpkj.GMF_NSRSBH.IsNullOrEmptyOrWhiteSpace())
opResult.OperateResult.Add(new OperateResult
{
Name = "客户信息",
@@ -204,7 +231,7 @@ WHERE ID IN ({string.Join(",", fidList)})
SuccessStatus = false
});
if (isPaper && fpkj.GMF_DZDH == string.Empty)
if (isPaper && fpkj.GMF_DZDH.IsNullOrEmptyOrWhiteSpace())
opResult.OperateResult.Add(new OperateResult
{
Name = "客户信息",
@@ -212,7 +239,7 @@ WHERE ID IN ({string.Join(",", fidList)})
SuccessStatus = false
});
if (isPaper && fpkj.GMF_YHZH == string.Empty)
if (isPaper && fpkj.GMF_YHZH.IsNullOrEmptyOrWhiteSpace())
opResult.OperateResult.Add(new OperateResult
{
Name = "客户信息",
@@ -224,70 +251,53 @@ WHERE ID IN ({string.Join(",", fidList)})
#region
var details = fpkj.COMMON_FPKJ_XMXX = new List<COMMON_FPKJ_XMXX>();
if (!opResult.OperateResult.Any())
{
var checkTaxCategroupSql = $@"
SELECT
a.FMASTERID,
a.FNUMBER,
a.FMATERIALID ,
b.FTAXCATEGORYCODEID ,
c.FTAXCODE ,
d.FENTRYID
FROM
T_BD_MATERIAL a
LEFT JOIN T_BD_MATERIALSALE b ON a.FMATERIALID = b.FMATERIALID
INNER JOIN T_IV_GTTAXCODE c ON b.FTAXCATEGORYCODEID = c.FID
INNER JOIN T_SAL_OUTSTOCKENTRY d ON d.FMATERIALID = a.FMATERIALID
WHERE
c.FDOCUMENTSTATUS = 'C'
AND d.FID in ({string.Join(",", fidList)}) ";
if (opResult.OperateResult.Any())
throw new Exception("检验信息");
var entrySql = $@"
var entrySql = $@"
SELECT
ID,FTAXCATEGORYCODEID,Number,TaxCode,MaterialName,Salunitqty,Specification,UnitName,Price,Amount,TaxRate,TaxAmount
from V_OUTSTOCKINVINFO_ENTRY
ID,TaxCategoryCodeId,Number,TaxCode,MaterialName,Qty,Specification,UnitName,Price,Amount,TaxRate,TaxAmount
FROM V_INVINFO_OUTSTOCKENTRY
AND ID in ({string.Join(",", fidList)})
WHERE ID in ({string.Join(",", fidList)})
";
var dbList = DBUtils.ExecuteDynamicObject(this.Context, $"/*dialect*/{entrySql}");
var dbList = DBUtils.ExecuteDynamicObject(this.Context, $"/*dialect*/{entrySql}");
foreach (var item in dbList)
foreach (var item in dbList)
{
if (item["TaxCategoryCodeId"].Long2Int() == 0)
{
if (item["FTAXCATEGORYCODEID"].IsNullOrEmpty())
opResult.OperateResult.Add(new OperateResult
{
opResult.OperateResult.Add(new OperateResult
{
Name = item["Number"].ToString(),
Message = $"物料:{item["Number"]} 缺少税收分类编码!",
SuccessStatus = false
});
continue;
}
details.Add(new COMMON_FPKJ_XMXX
{
FPHXZ = "0",
SPBM = item["TaxCode"].ToString(),
//ZXBM = material["Number"].ToString(),
XMMC = item["MaterialName"].ToString(),
XMSL = item["Salunitqty"].ToDecimal().ToString("F6"),
GGXH = item["Specification"].ToString(),
DW = item["UnitName"].ToString(),
XMDJ = item["Price"].ToDecimal().ToString("F6"),
XMJE = item["Amount"].ToDecimal().ToString("F2"),
SL = (item["TaxRate"].ToDecimal() * 0.01M).ToString("F2"),
SE = item["TaxAmount"].ToDecimal().ToString("F2"),
Name = item["Number"].ToString(),
Message = $"物料:{item["Number"]} 缺少税收分类编码!",
SuccessStatus = false
});
continue;
}
if (opResult.OperateResult.Any())
throw new Exception("物料缺少税收分类编码");
details.Add(new COMMON_FPKJ_XMXX
{
FPHXZ = "0",
SPBM = item["TaxCode"].ToString(),
//ZXBM = material["Number"].ToString(),
XMMC = item["MaterialName"].ToString(),
XMSL = item["Qty"].ToDecimal().ToString("F6"),
GGXH = item["Specification"].ToString(),
DW = item["UnitName"].ToString(),
XMDJ = item["Price"].ToDecimal().ToString("F6"),
XMJE = item["Amount"].ToDecimal().ToString("F2"),
SL = (item["TaxRate"].ToDecimal() * 0.01M).ToString("F2"),
SE = item["TaxAmount"].ToDecimal().ToString("F2"),
});
}
if (opResult.OperateResult.Any())
throw new Exception("物料缺少税收分类编码");
#endregion
#endregion
@@ -520,7 +530,7 @@ ORDER BY
{
this.View.ShowMessage($"报文处理成功,正在回填发票信息【财务信息】");
var idList = this.ListView.SelectedRowsInfo.Select(x => x.FormID).Distinct();
var idList = this.ListView.SelectedRowsInfo.Select(x => x.PrimaryKeyValue).Distinct();
//更新对应开票信息的流水号记录
var serialNumber = invInfo["FSERIALNUMBER"].Long2Int();

View File

@@ -73,6 +73,10 @@
</ItemGroup>
<ItemGroup>
<Content Include="ISSUE\证书\密码.txt" />
<Content Include="SQLServer\月度生产计划表-预测单.sql" />
<Content Include="SQLServer\月度生产计划表.sql" />
<Content Include="SQLServer\销售出库单子表信息.sql" />
<Content Include="SQLServer\销售出库单财务信息-视图.sql" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Extensions\ExtensionMethods.csproj">

View File

@@ -0,0 +1,27 @@
IF EXISTS (SELECT * FROM sysobjects WHERE name='V_INVINFO_OUTSTOCKENTRY') --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DROP VIEW V_INVINFO_OUTSTOCKENTRY --<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GO
CREATE VIEW V_INVINFO_OUTSTOCKENTRY
AS
SELECT
AE.FID AS ID
,AE.FENTRYID AS ENTRYID
,BS.FTAXCATEGORYCODEID AS TAXCATEGORYCODEID
,B.FNUMBER AS NUMBER
,C.FTAXCODE AS TAXCODE
,B_L.FNAME AS MATERIALNAME
,AE_F.FSALUNITQTY AS QTY
,B_L.FSPECIFICATION AS SPECIFICATION
,D_L.FNAME AS UNITNAME
,AE_F.FPRICE AS PRICE
,AE_F.FAMOUNT AS AMOUNT
,AE_F.FTAXRATE AS TAXRATE
,AE_F.FTAXAMOUNT AS TAXAMOUNT
FROM
T_SAL_OUTSTOCKENTRY AE
LEFT JOIN T_SAL_OUTSTOCKENTRY_F AE_F ON AE.FENTRYID = AE_F.FENTRYID AND AE.FID = AE_F.FID
LEFT JOIN T_BD_MATERIAL B ON AE.FMATERIALID = B.FMATERIALID
LEFT JOIN T_BD_MATERIALSALE BS ON AE.FMATERIALID = BS.FMATERIALID
LEFT JOIN T_BD_MATERIAL_L B_L ON AE.FMATERIALID = B_L.FMATERIALID AND B_L.FLOCALEID =2052
LEFT JOIN T_IV_GTTAXCODE C ON BS.FTAXCATEGORYCODEID = C.FID AND C.FDOCUMENTSTATUS = 'C'
LEFT JOIN T_BD_UNIT_L D_L ON AE.FUNITID = D_L.FUNITID AND D_L.FLOCALEID = 2052

View File

@@ -0,0 +1,35 @@
IF EXISTS (SELECT * FROM sysobjects WHERE name='V_INVINFO_OUTSTOCK') --
DROP VIEW V_INVINFO_OUTSTOCK --
GO
CREATE VIEW V_INVINFO_OUTSTOCK
AS
SELECT
A.FBILLNO as BILLNO,
A.FID as ID,
A.FSTOCKORGID as STOCKORGID,
A.FDOCUMENTSTATUS as DOCUMENTSTATUS,
A.FCUSTOMERID as CUSTID,
AF.FBILLALLAMOUNT AS BILLALLAMOUNT,
AF.FBILLAMOUNT AS BILLAMOUNT,
AF.FBILLTAXAMOUNT as BILLTAXAMOUNT
,AF.FINVOICENUMBER AS INVOICENUMBER
-- ,B_L.FDEPTID as APPLYID
-- ,B_L.FNAME as APPLYNAME
,1 as APPLYID
,'' as APPLYNAME
,C_L.FNAME as CUSTNAME
,c.FTAXREGISTERCODE as TAXREGISTERCODE
,c.FSOCIALCRECODE as SOCIALCRECODE
,c_f.FINVOICETITLE as INVOICETITLE
,c_f.FINVOICEBANKNAME as INVOICEBANKNAME
,c_f.FINVOICEBANKACCOUNT as INVOICEBANKACCOUNT
,c_f.FINVOICETEL as INVOICETEL
,c.FINVOICEADDRESS as INVOICEADDRESS
FROM
T_SAL_OUTSTOCK A
LEFT JOIN T_SAL_OUTSTOCKFIN AF ON A.FID = AF.FID
-- left join T_BD_DEPARTMENT_L B_L on A.F_QNV_Base1 = B_L.FDEPTID and b_l.FLOCALEID = 2052
left join T_BD_CUSTOMER C ON a.FCUSTOMERID = c.FCUSTID
left join T_BD_CUSTOMER_L C_L ON a.FCUSTOMERID = c_l.FCUSTID and C_L.FLOCALEID = 2052
left join T_BD_CUSTOMER_F C_F on a.FCUSTOMERID = C_F.FCUSTID

View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Azure.Core" version="1.25.0" targetFramework="net472" />
<package id="Azure.Identity" version="1.7.0" targetFramework="net472" />
<package id="Microsoft.Bcl.AsyncInterfaces" version="1.1.1" targetFramework="net472" />
<package id="Microsoft.Data.SqlClient" version="5.1.1" targetFramework="net472" />
<package id="Microsoft.Data.SqlClient.SNI" version="5.1.0" targetFramework="net472" />
<package id="Microsoft.Identity.Client" version="4.47.2" targetFramework="net472" />
<package id="Microsoft.Identity.Client.Extensions.Msal" version="2.19.3" targetFramework="net472" />
<package id="Microsoft.IdentityModel.Abstractions" version="6.24.0" targetFramework="net472" />
<package id="Microsoft.IdentityModel.JsonWebTokens" version="6.24.0" targetFramework="net472" />
<package id="Microsoft.IdentityModel.Logging" version="6.24.0" targetFramework="net472" />
<package id="Microsoft.IdentityModel.Protocols" version="6.24.0" targetFramework="net472" />
<package id="Microsoft.IdentityModel.Protocols.OpenIdConnect" version="6.24.0" targetFramework="net472" />
<package id="Microsoft.IdentityModel.Tokens" version="6.24.0" targetFramework="net472" />
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
<package id="System.Configuration.ConfigurationManager" version="6.0.1" targetFramework="net472" />
<package id="System.Diagnostics.DiagnosticSource" version="4.6.0" targetFramework="net472" />
<package id="System.IdentityModel.Tokens.Jwt" version="6.24.0" targetFramework="net472" />
<package id="System.IO" version="4.3.0" targetFramework="net472" />
<package id="System.Memory" version="4.5.4" targetFramework="net472" />
<package id="System.Memory.Data" version="1.0.2" targetFramework="net472" />
<package id="System.Net.Http" version="4.3.4" targetFramework="net472" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
<package id="System.Runtime" version="4.3.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net472" />
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net472" />
<package id="System.Security.AccessControl" version="6.0.0" targetFramework="net472" />
<package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Cryptography.ProtectedData" version="4.7.0" targetFramework="net472" />
<package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Permissions" version="6.0.0" targetFramework="net472" />
<package id="System.Security.Principal.Windows" version="5.0.0" targetFramework="net472" />
<package id="System.Text.Encoding" version="4.3.0" targetFramework="net472" />
<package id="System.Text.Encodings.Web" version="6.0.0" targetFramework="net472" />
<package id="System.Text.Json" version="4.7.2" targetFramework="net472" />
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net472" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net472" />
</packages>

View File

@@ -1,11 +0,0 @@
SELECT
A.FBILLNO,
A.FID,
A.FSTOCKORGID,
A.FDOCUMENTSTATUS,
AF.FBILLALLAMOUNT,
AF.FBILLAMOUNT,
AF.FBILLTAXAMOUNT
FROM
T_SAL_OUTSTOCK A
LEFT JOIN T_SAL_OUTSTOCKFIN AF ON A.FID = AF.FID