2、收款单的收款人变更后,触发下推标记更新 3、手动定时拉取sap应付凭证 合作银行类型为空带供应商一条银行(多条也需要测试) 4、收款单下推清账单自动生成清账明细单
This commit is contained in:
parent
02e9989768
commit
317edd2a6c
|
|
@ -170,8 +170,50 @@ public class RecBillFromPlugin extends AbstractFormPlugin implements Plugin {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//结构性清账客户+业务小类(全部金蝶清账),同时满足时,才允许下推清账明细判断 yxl 20250512
|
||||||
|
DynamicObject bizSmall = (DynamicObject) this.getModel().getValue("shjh_bizsmall");
|
||||||
|
boolean iskdqbqz = false;//全部金蝶清账标识
|
||||||
|
if (null != bizSmall) {
|
||||||
|
//当收款单【业务小类】清账方式字段=全部金蝶清账
|
||||||
|
if ("qbjdqz".equals(bizSmall.getString("shjh_qzfs"))) {
|
||||||
|
iskdqbqz = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DynamicObjectCollection entryEntity = this.getModel().getEntryEntity("entry");
|
||||||
|
if(iskdqbqz){
|
||||||
|
for (int i = 0; i < entryEntity.size(); i++) {
|
||||||
|
this.getModel().setValue("shjh_needpushbill", false, i);//不需要下推清账单
|
||||||
|
this.getModel().setValue("shjh_closingstatus", "A", i);//无需金蝶清账
|
||||||
|
}
|
||||||
|
if (null != value && "bd_customer".equals(type)) {
|
||||||
|
DynamicObject currentorg = (DynamicObject) this.getModel().getValue("org");//单据所属当前公司
|
||||||
|
QFilter mapnumber = new QFilter("shjh_customer.id", QCP.equals, value);
|
||||||
|
mapnumber.and("enable", QCP.equals, "1");//是否可用
|
||||||
|
mapnumber.and("shjh_org.id", QCP.equals, currentorg.getLong("id"));//公司
|
||||||
|
DynamicObject mappingObj = BusinessDataServiceHelper.loadSingle("shjh_jgqzcust", mapnumber.toArray());
|
||||||
|
if (null != mappingObj) {
|
||||||
|
for (int i = 0; i < entryEntity.size(); i++) {
|
||||||
|
this.getModel().setValue("shjh_needpushbill", true, i);//需要下推清账单
|
||||||
|
this.getModel().setValue("shjh_closingstatus", "B", i);//待清账
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (int i = 0; i < entryEntity.size(); i++) {
|
||||||
|
this.getModel().setValue("shjh_needpushbill", false, i);//不需要下推清账单
|
||||||
|
this.getModel().setValue("shjh_closingstatus", "A", i);//无需金蝶清账
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
//【业务小类】清账方式字段 != 全部金蝶清账
|
||||||
|
for (int i = 0; i < entryEntity.size(); i++) {
|
||||||
|
this.getModel().setValue("shjh_needpushbill", false, i);//不需要下推清账单
|
||||||
|
this.getModel().setValue("shjh_closingstatus", "A", i);//无需金蝶清账
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.getView().updateView();
|
this.getView().updateView();
|
||||||
}
|
}
|
||||||
|
|
||||||
}else if (StringUtils.equals(fieldKey, "shjh_bizsmall")) {
|
}else if (StringUtils.equals(fieldKey, "shjh_bizsmall")) {
|
||||||
//监听业务小类
|
//监听业务小类
|
||||||
//付款人类型=客户或者其他,都可以,根据业务小类的清账方式来判断
|
//付款人类型=客户或者其他,都可以,根据业务小类的清账方式来判断
|
||||||
|
|
|
||||||
|
|
@ -607,7 +607,7 @@ public class SappzFormPlugin extends AbstractFormPlugin {
|
||||||
ap_payapply_entry.set("e_bebank", bank);//开户银行
|
ap_payapply_entry.set("e_bebank", bank);//开户银行
|
||||||
ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称
|
ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称
|
||||||
ispp = true;
|
ispp = true;
|
||||||
}else if(!EsbUtils.isEmpty(assacct) && bankentrys.size() > 1){
|
}else if(!EsbUtils.isEmpty(assacct)){
|
||||||
for (DynamicObject bankentry : bankentrys) {
|
for (DynamicObject bankentry : bankentrys) {
|
||||||
if (assacct.equals(bankentry.getString("shjh_banktype"))) {
|
if (assacct.equals(bankentry.getString("shjh_banktype"))) {
|
||||||
String bankaccount = bankentry.getString("bankaccount");
|
String bankaccount = bankentry.getString("bankaccount");
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,8 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im
|
||||||
|
|
||||||
//更新单据状态为作废
|
//更新单据状态为作废
|
||||||
private static final String updateInvalidStatus = "update tk_shjh_clear_account set fbillstatus='D' where fid=?;";
|
private static final String updateInvalidStatus = "update tk_shjh_clear_account set fbillstatus='D' where fid=?;";
|
||||||
|
//更新下推明细单结果
|
||||||
|
private static final String updatePushStatus = "update tk_shjh_clear_account set fk_shjh_pushdetail=? where fid=?;";
|
||||||
//更新单据状态为已提交
|
//更新单据状态为已提交
|
||||||
private static final String updateSubmitStatus = "update tk_shjh_clear_account set fbillstatus='B' where fid=?;";
|
private static final String updateSubmitStatus = "update tk_shjh_clear_account set fbillstatus='B' where fid=?;";
|
||||||
//手动修改清账状态
|
//手动修改清账状态
|
||||||
|
|
@ -126,6 +128,9 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im
|
||||||
super.afterExecuteOperationTransaction(e);
|
super.afterExecuteOperationTransaction(e);
|
||||||
String eok = e.getOperationKey();
|
String eok = e.getOperationKey();
|
||||||
switch (eok) {
|
switch (eok) {
|
||||||
|
case "save":
|
||||||
|
handleClear(e);//保存-触发下推清账明细单
|
||||||
|
break;
|
||||||
case "clearacctount":
|
case "clearacctount":
|
||||||
handleClear(e);//清账-下推清账明细单
|
handleClear(e);//清账-下推清账明细单
|
||||||
break;
|
break;
|
||||||
|
|
@ -320,6 +325,11 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im
|
||||||
List<Long> receivers = new ArrayList<>(1);
|
List<Long> receivers = new ArrayList<>(1);
|
||||||
for (int i = 0; i < dos.length; i++) {
|
for (int i = 0; i < dos.length; i++) {
|
||||||
prinfo = BusinessDataServiceHelper.loadSingle(dos[i].getPkValue(), dos[i].getDataEntityType().getName());
|
prinfo = BusinessDataServiceHelper.loadSingle(dos[i].getPkValue(), dos[i].getDataEntityType().getName());
|
||||||
|
//判断下推明细单结果,如果不是下推成功,则处理,否则不处理
|
||||||
|
if("A".equals(prinfo.getString("shjh_pushdetail"))){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
//判断当前清账单是否由收款单补推,如果是,则根据清账单上的被通知人进行通知;否则根据配置表
|
//判断当前清账单是否由收款单补推,如果是,则根据清账单上的被通知人进行通知;否则根据配置表
|
||||||
userinfo = prinfo.getDynamicObject("shjh_noticeuser");
|
userinfo = prinfo.getDynamicObject("shjh_noticeuser");
|
||||||
if(userinfo != null){
|
if(userinfo != null){
|
||||||
|
|
@ -344,6 +354,8 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im
|
||||||
qFilter.and("shjh_org", QCP.equals, prinfo.getDynamicObject("org").getLong("id"));
|
qFilter.and("shjh_org", QCP.equals, prinfo.getDynamicObject("org").getLong("id"));
|
||||||
pzbs = BusinessDataServiceHelper.load(pzbName, "id", qFilter.toArray(), "modifytime desc");
|
pzbs = BusinessDataServiceHelper.load(pzbName, "id", qFilter.toArray(), "modifytime desc");
|
||||||
if (pzbs.length == 0) {
|
if (pzbs.length == 0) {
|
||||||
|
//更新清账单下推明细单结果
|
||||||
|
DB.update(DBRoute.of("fi"), updatePushStatus, new Object[]{"B", prinfo.getPkValue()});
|
||||||
addErrorInfo(prinfo,"根据结构性清账客户映射表未找到对应通知人,无法下推清账明细单");
|
addErrorInfo(prinfo,"根据结构性清账客户映射表未找到对应通知人,无法下推清账明细单");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -364,6 +376,8 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im
|
||||||
String pcurl = JhzjUtils.getBillPCURL(detailinfo);
|
String pcurl = JhzjUtils.getBillPCURL(detailinfo);
|
||||||
JhzjUtils.sendEmail("请登录资金系统操作清账明细单", detailinfo.getString("billno") +
|
JhzjUtils.sendEmail("请登录资金系统操作清账明细单", detailinfo.getString("billno") +
|
||||||
"<br> 详情页面 <a href='"+pcurl+"' target='_blank'>"+pcurl+"</a>", receivers, detailinfo);
|
"<br> 详情页面 <a href='"+pcurl+"' target='_blank'>"+pcurl+"</a>", receivers, detailinfo);
|
||||||
|
//更新清账单下推明细单结果
|
||||||
|
DB.update(DBRoute.of("fi"), updatePushStatus, new Object[]{"A", prinfo.getPkValue()});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -799,6 +813,56 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleNotice(AfterOperationArgs e) {
|
private void handleNotice(AfterOperationArgs e) {
|
||||||
//通知具体实现
|
//通知具体实现 防止OA待办未发送成功的情况
|
||||||
|
DynamicObject[] dos = e.getDataEntities();
|
||||||
|
DynamicObject prinfo;//清账单
|
||||||
|
DynamicObject detailinfo;//清账明细单
|
||||||
|
QFilter qFilter;
|
||||||
|
DynamicObject[] pzbs;
|
||||||
|
DynamicObject pzbinfo;//配置表
|
||||||
|
DynamicObject userinfo;//被通知用户
|
||||||
|
DynamicObjectCollection users;//配置表中的被通知人集合
|
||||||
|
for (int i = 0; i < dos.length; i++) {
|
||||||
|
prinfo = BusinessDataServiceHelper.loadSingle(dos[i].getPkValue(), dos[i].getDataEntityType().getName());
|
||||||
|
//判断当前清账单是否由收款单补推,如果是,则根据清账单上的被通知人进行通知;否则根据配置表
|
||||||
|
userinfo = prinfo.getDynamicObject("shjh_noticeuser");
|
||||||
|
if(userinfo != null){
|
||||||
|
//根据清账单id和创建人id判断清账明细单是否已生成
|
||||||
|
qFilter = new QFilter("shjh_clearbillid", QCP.equals, prinfo.getString("id"));
|
||||||
|
qFilter.and("creator", QCP.equals, userinfo.getLong("id"));
|
||||||
|
detailinfo = BusinessDataServiceHelper.loadSingle(entityName, qFilter.toArray());
|
||||||
|
if (detailinfo != null) {
|
||||||
|
//发送清账明细单的OA待办
|
||||||
|
JhzjUtils.handleOA(detailinfo, "0", "0");
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
//根据客户、公司、是否可用找到对应的被通知人员(可能多个)
|
||||||
|
qFilter = new QFilter("enable", QCP.equals, "1");
|
||||||
|
qFilter.and("shjh_customer", QCP.equals, prinfo.getDynamicObject("shjh_customer").getLong("id"));
|
||||||
|
qFilter.and("shjh_org", QCP.equals, prinfo.getDynamicObject("org").getLong("id"));
|
||||||
|
pzbs = BusinessDataServiceHelper.load(pzbName, "id", qFilter.toArray(), "modifytime desc");
|
||||||
|
if (pzbs.length == 0) {
|
||||||
|
//更新清账单下推明细单结果
|
||||||
|
addErrorInfo(prinfo,"根据结构性清账客户映射表未找到对应通知人,无法发送OA待办");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
pzbinfo = BusinessDataServiceHelper.loadSingle(pzbs[0].getLong("id"), pzbName);
|
||||||
|
users = pzbinfo.getDynamicObjectCollection("shjh_users");
|
||||||
|
for (DynamicObject user : users) {
|
||||||
|
userinfo = user.getDynamicObject("fbasedataid");//fbasedataid
|
||||||
|
//根据清账单id和创建人id判断清账明细单是否已生成
|
||||||
|
qFilter = new QFilter("shjh_clearbillid", QCP.equals, prinfo.getString("id"));
|
||||||
|
qFilter.and("creator", QCP.equals, userinfo.getLong("id"));
|
||||||
|
detailinfo = BusinessDataServiceHelper.loadSingle(entityName, qFilter.toArray());
|
||||||
|
if (detailinfo != null) {
|
||||||
|
//发送清账明细单的OA待办
|
||||||
|
JhzjUtils.handleOA(detailinfo, "0", "0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//处理完成提示
|
||||||
|
this.operationResult.addSuccessPkId(prinfo.getPkValue());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -599,6 +599,7 @@ public class RecBillSaveOperation extends AbstractOperationServicePlugIn impleme
|
||||||
*/
|
*/
|
||||||
private void carryCustomerRule(DynamicObject entry,DynamicObject bill,String oppunit,Long companyId){
|
private void carryCustomerRule(DynamicObject entry,DynamicObject bill,String oppunit,Long companyId){
|
||||||
//1.先看取映射表按钮是否打开,打开——>取映射表中客户
|
//1.先看取映射表按钮是否打开,打开——>取映射表中客户
|
||||||
|
//20250704 经过和建彪沟通先注释根据标记来判断的代码
|
||||||
// boolean shjhEGetcustomer = entry.getBoolean("shjh_e_getcustomer"); //取规则得映射表客户标记
|
// boolean shjhEGetcustomer = entry.getBoolean("shjh_e_getcustomer"); //取规则得映射表客户标记
|
||||||
// if (shjhEGetcustomer) {
|
// if (shjhEGetcustomer) {
|
||||||
QFilter qFilter = new QFilter("shjh_dfhm", QCP.equals, oppunit);
|
QFilter qFilter = new QFilter("shjh_dfhm", QCP.equals, oppunit);
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,9 @@ public class QuerySapCreatePayApplyTask extends AbstractTask {
|
||||||
int daysBefore = Integer.parseInt(lq1);//临期_前
|
int daysBefore = Integer.parseInt(lq1);//临期_前
|
||||||
int daysAfter = Integer.parseInt(lq);//临期_后
|
int daysAfter = Integer.parseInt(lq);//临期_后
|
||||||
int totalDays = daysBefore + daysAfter;//总天数,后面按照每30天调用一次接口
|
int totalDays = daysBefore + daysAfter;//总天数,后面按照每30天调用一次接口
|
||||||
//计算按照30天为一个循环,需要循环的次数
|
int callInterval = 30; // 调用间隔天数
|
||||||
|
// 计算调用次数(向上取整)
|
||||||
|
int callCount = (int) Math.ceil((double) totalDays / callInterval);
|
||||||
|
|
||||||
// 计算开始日期(临期_前表示今天之前的天数)
|
// 计算开始日期(临期_前表示今天之前的天数)
|
||||||
LocalDate startDate = currentDate;
|
LocalDate startDate = currentDate;
|
||||||
|
|
@ -357,7 +359,7 @@ public class QuerySapCreatePayApplyTask extends AbstractTask {
|
||||||
ap_payapply_entry.set("e_bebank", bank);//开户银行
|
ap_payapply_entry.set("e_bebank", bank);//开户银行
|
||||||
ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称
|
ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称
|
||||||
ispp = true;
|
ispp = true;
|
||||||
}else if(!EsbUtils.isEmpty(assacct) && bankentrys.size() > 1){
|
}else if(!EsbUtils.isEmpty(assacct)){
|
||||||
for (DynamicObject bankentry : bankentrys) {
|
for (DynamicObject bankentry : bankentrys) {
|
||||||
if (assacct.equals(bankentry.getString("shjh_banktype"))) {
|
if (assacct.equals(bankentry.getString("shjh_banktype"))) {
|
||||||
String bankaccount = bankentry.getString("bankaccount");
|
String bankaccount = bankentry.getString("bankaccount");
|
||||||
|
|
|
||||||
|
|
@ -730,7 +730,7 @@ public class ApplyAdjustBillControler {
|
||||||
ap_payapply_entry.set("e_bebank", bank);//开户银行
|
ap_payapply_entry.set("e_bebank", bank);//开户银行
|
||||||
ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称
|
ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称
|
||||||
ispp = true;
|
ispp = true;
|
||||||
}else if(!EsbUtils.isEmpty(assacct) && bankentrys.size() > 1){
|
}else if(!EsbUtils.isEmpty(assacct)){
|
||||||
for (DynamicObject bankentry : bankentrys) {
|
for (DynamicObject bankentry : bankentrys) {
|
||||||
if (assacct.equals(bankentry.getString("shjh_banktype"))) {
|
if (assacct.equals(bankentry.getString("shjh_banktype"))) {
|
||||||
String bankaccount = bankentry.getString("bankaccount");
|
String bankaccount = bankentry.getString("bankaccount");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue