销售出库单发票合并打印

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();