Commit 95980f00 by 王勇飞

Merge branch 'tx-fi-tax' of gitlab.gongsibao.com:jiangyong/zhichan into tx-fi-tax

parents 7e12d33d ec700c4c
...@@ -62,7 +62,8 @@ class DeliverybillDao extends Dao { ...@@ -62,7 +62,8 @@ class DeliverybillDao extends Dao {
/** /**
* 筛选 条件 TODO: 筛选功能字段(filter) * 筛选 条件 TODO: 筛选功能字段
* company_name、v_coname、v_cophone
*/ */
qc.where["$and"] = filters; qc.where["$and"] = filters;
return qw; return qw;
......
...@@ -4,376 +4,377 @@ const settings = require("../../../../config/settings"); ...@@ -4,376 +4,377 @@ const settings = require("../../../../config/settings");
const System = require("../../../system"); const System = require("../../../system");
const appconfig = system.getSysConfig(); const appconfig = system.getSysConfig();
class DeliverybillService extends ServiceBase { class DeliverybillService extends ServiceBase {
constructor() { constructor() {
super("bizchance", ServiceBase.getDaoName(DeliverybillService)); super("bizchance", ServiceBase.getDaoName(DeliverybillService));
this.logService = system.getObject("service.bizchance.statuslogSve"); this.logService = system.getObject("service.bizchance.statuslogSve");
this.fitaxschemeDao = system.getObject("service.bizchance.fitaxschemeDao"); this.fitaxschemeDao = system.getObject("service.bizchance.fitaxschemeDao");
this.bizoptDao = system.getObject("service.bizchance.bizoptDao"); this.bizoptDao = system.getObject("service.bizchance.bizoptDao");
this.operationrecordDao = system.getObject("service.bizchance.operationrecordDao"); this.operationrecordDao = system.getObject("service.bizchance.operationrecordDao");
}
async updateOrderStatus(pobj) {
let deliverData = await this.dao.findOne({
id: pobj.deliverId
});
if (!deliverData) {
throw new Error("查不到此交付单");
}
if (deliverData.delivery_status !== system.SERVERSESTATUS.RECEIVED) {
throw new Error("该状态下不可处理");
}
let updateResult = {};
let { delivery_info } = deliverData;
if (pobj.orderStaus === true) {
updateResult = {
delivery_info: {
...delivery_info,
setupAt: pobj.setupAt//建账时间
},
delivery_status: system.SERVERSESTATUS.WAITUSERCONFIRM
}
} }
if (pobj.orderStaus === false) {
updateResult = {
delivery_status: system.SERVERSESTATUS.CLOSED,
close_reason: pobj.note
}
}
await this.dao.updateByWhere(updateResult, {
id: pobj.deliverId
});
this.logService.insertInfo({
flowType: system.FLOWCODE.DELIVERY,
flowId: pobj.deliverId,
statusCode: updateResult.delivery_status,
clerkName: pobj.userid,
clerkId: pobj.username
});
return "SUCCESS"
}
async setupBill(pobj) { async updateOrderStatus(pobj) {
let deliverData = await this.dao.findOne({ let deliverData = await this.dao.findOne({
id: pobj.deliverId id: pobj.deliverId
}); });
if (!deliverData) { if (!deliverData) {
throw new Error("查不到此交付单"); throw new Error("查不到此交付单");
} }
if (deliverData.delivery_status !== system.SERVERSESTATUS.INSERVICE) { if (deliverData.delivery_status !== system.SERVERSESTATUS.RECEIVED) {
throw new Error("该状态下不可建账"); throw new Error("该状态下不可处理");
}
let updateResult = {};
let { delivery_info } = deliverData;
if (pobj.orderStaus === true) {
updateResult = {
delivery_info: {
...delivery_info,
setupAt: pobj.setupAt//建账时间
},
delivery_status: system.SERVERSESTATUS.WAITUSERCONFIRM
}
}
if (pobj.orderStaus === false) {
updateResult = {
delivery_status: system.SERVERSESTATUS.CLOSED,
close_reason: pobj.note
}
}
await this.dao.updateByWhere(updateResult, {
id: pobj.deliverId
});
this.logService.insertInfo({
flowType: system.FLOWCODE.DELIVERY,
flowId: pobj.deliverId,
statusCode: updateResult.delivery_status,
clerkName: pobj.userid,
clerkId: pobj.username
});
return "SUCCESS"
} }
await this.dao.updateByWhere({
delivery_info: {
...delivery_info,
setupStatus: system.SERVERSESTATUS.SETUP,
setupInfo: {
contactsName: pobj.contactsName,
time: pobj.time,
accountingType: pobj.accountingType,
taxpayerType: pobj.taxpayerType,
supplier: pobj.supplier
}
}
}, {
id: pobj.deliverId
});
return "SUCCESS"
}
async deliverInfo(pobj) { async setupBill(pobj) {
let result = {}; let deliverData = await this.dao.findOne({
let deliverData = await this.dao.findOne({ id: pobj.deliverId
id: pobj.deliverId });
}); if (!deliverData) {
if (!deliverData) { throw new Error("查不到此交付单");
throw new Error("查不到此交付单"); }
} if (deliverData.delivery_status !== system.SERVERSESTATUS.INSERVICE) {
result.deliverData = { throw new Error("该状态下不可建账");
deliveryId: deliverData.id, // id }
deliveryNumber: deliverData.delivery_code, // 交付单编号 await this.dao.updateByWhere({
companyName: deliverData.delivery_info.companyName,// 企业名称 delivery_info: {
uscc: deliverData.delivery_info.uscc, //统一信用代码 ...delivery_info,
taxpayerType: delivery_info.taxpayerType, //纳税人类型 1 一般;2 小规模 setupStatus: system.SERVERSESTATUS.SETUP,
//会计准侧 setupInfo: {
companyBizType: delivery_info.companyBizType,// 公司类型 1-商贸型;2-服务型;3-特殊行业;4-其他 contactsName: pobj.contactsName,
areaType: delivery_info.areaType, //区域类型 city-城市 time: pobj.time,
area: service_address, // 服务 地区 编码 accountingType: pobj.accountingType,
contactsName: delivery_info.contactsName,// 联系人 taxpayerType: pobj.taxpayerType,
contactsPhone: delivery_info.contactsPhone,// 联系电话 supplier: pobj.supplier
owner: salesman_name,//所属人 }
deliveryStatus: delivery_status, // 交付单状态 }
setupStatus: delivery_info.setupStatus || System.SERVERSESTATUS.NOTSETUP,//建账状态 notsetup | setup }, {
createdAt: created_at, id: pobj.deliverId
updatedAt: updated_at, });
} return "SUCCESS"
if (deliverData.scheme_number) {
let schemeData = await this.fitaxschemeDao.findOne({
solution_bizid: deliverData.scheme_number
});
if (schemeData) {
result.schemeData = {
demandCode: schemeData.demand_code, // 需求编号
schemeCode: deliverData.scheme_number,//方案编号
// 服务类型
companyType: schemeData.company_type,//公司类型
area: schemeData.service_name,//服务地区
buyDuration: schemeData.buy_duration,//购买时长
buyNumber: schemeData.number,//购买数量
totalCost: schemeData.total_cost,//总计费用
note: schemeData.remarks//备注
}
}
} }
return result
}
async distributionPerson(pobj) { async deliverInfo(pobj) {
// let { numbers, nickName, userId, opCode, phone, type } = pobj; let result = {};
// switch (type) { let deliverData = await this.dao.findOne({
// case System.FLOWCODE.DELIVERY: id: pobj.deliverId
// let datas = await this.dao.findAll({ });
// delivery_code: { if (!deliverData) {
// $in: numbers throw new Error("查不到此交付单");
// } }
// }); result.deliverData = {
// if (datas.length !== numbers.length) { deliveryId: deliverData.id, // id
// throw new Error("请检查单号是否正确"); deliveryNumber: deliverData.delivery_code, // 交付单编号
// } companyName: deliverData.delivery_info.companyName,// 企业名称
// await this.dao.updateByWhere({ uscc: deliverData.delivery_info.uscc, //统一信用代码
// salesman_id: userId, taxpayerType: delivery_info.taxpayerType, //纳税人类型 1 一般;2 小规模
// salesman_opcode: opCode, //会计准侧
// salesman_phone: phone, companyBizType: delivery_info.companyBizType,// 公司类型 1-商贸型;2-服务型;3-特殊行业;4-其他
// salesman_name: nickName areaType: delivery_info.areaType, //区域类型 city-城市
// }, { area: service_address, // 服务 地区 编码
// delivery_code: { contactsName: delivery_info.contactsName,// 联系人
// $in: numbers contactsPhone: delivery_info.contactsPhone,// 联系电话
// } owner: salesman_name,//所属人
// }); deliveryStatus: delivery_status, // 交付单状态
// // 插入 流转 记录 setupStatus: delivery_info.setupStatus || System.SERVERSESTATUS.NOTSETUP,//建账状态 notsetup | setup
// let logs = []; createdAt: created_at,
// for (let val of datas) { updatedAt: updated_at,
// logs.push({ }
// demand_code: val.delivery_code, if (deliverData.scheme_number) {
// operator: { let schemeData = await this.fitaxschemeDao.findOne({
// id: pobj.userid, solution_bizid: deliverData.scheme_number
// username: pobj.username });
// }, if (schemeData) {
// operation_type: "distribution", result.schemeData = {
// operation_details: { demandCode: schemeData.demand_code, // 需求编号
// isFirst: val.salesman_id ? true : false, schemeCode: deliverData.scheme_number,//方案编号
// fromUserId: val.salesman_id, // 服务类型
// fromUserName: val.salesman_name, companyType: schemeData.company_type,//公司类型
// toUserId: userId, area: schemeData.service_name,//服务地区
// toUserName: nickName buyDuration: schemeData.buy_duration,//购买时长
// }, buyNumber: schemeData.number,//购买数量
// order_type: System.FLOWCODE.DELIVERY totalCost: schemeData.total_cost,//总计费用
// }) note: schemeData.remarks//备注
// } }
// this.operationrecordDao.bulkCreate(logs); }
// break }
// case System.FLOWCODE.BIZ: return result
// let datas = await this.bizoptDao.findAll({ }
// demand_code: {
// $in: numbers
// }
// });
// if (datas.length !== datas.length) {
// throw new Error("请检查单号是否正确");
// }
// return this.db.transaction(async (t) => {
// // 更新 操作人
// await this.bizoptDao.updateByWhere({
// salesman_id: userId,
// salesman_opcode: opCode,
// salesman_phone: phone,
// salesman_name: nickName
// }, {
// demand_code: {
// $in: numbers
// }
// }, t);
// // 更新 状态
// await this.bizoptDao.updateByWhere({
// business_status: "beforeFollowUp"
// }, {
// $and: [
// {
// demand_code: {
// $in: numbers
// }
// }, {
// business_status: "received"
// }
// ]
// }, t);
// // 插入 流转 记录
// let logs = [];
// for (let val of datas) {
// logs.push({
// demand_code: val.demand_code,
// operator: {
// id: pobj.userid,
// username: pobj.username
// },
// operation_type: "distribution",
// operation_details: {
// isFirst: val.salesman_id ? true : false,
// fromUserId: val.salesman_id,
// fromUserName: val.salesman_name,
// toUserId: userId,
// toUserName: nickName
// },
// order_type: System.FLOWCODE.BIZ
// })
// }
// this.operationrecordDao.bulkCreate(logs);
// return "success"
// });
// break
// }
// return "SUCCESS"
}
async insertInfo(qobj) { async distributionPerson(pobj) {
var self = this; let { numbers, nickName, userId, opCode, phone, type } = pobj;
return self.db.transaction(async function (t) { switch (type) {
return await self.dao.insertInfo(qobj, t); case System.FLOWCODE.DELIVERY:
}); let bizDatas = await this.dao.findAll({
} delivery_code: {
$in: numbers
}
});
if (bizDatas.length !== numbers.length) {
throw new Error("请检查单号是否正确");
}
await this.dao.updateByWhere({
salesman_id: userId,
salesman_opcode: opCode,
salesman_phone: phone,
salesman_name: nickName
}, {
delivery_code: {
$in: numbers
}
});
// 插入 流转 记录
let logs = [];
for (let val of bizDatas) {
logs.push({
demand_code: val.delivery_code,
operator: {
id: pobj.userid,
username: pobj.username
},
operation_type: "distribution",
operation_details: {
isFirst: val.salesman_id ? true : false,
fromUserId: val.salesman_id,
fromUserName: val.salesman_name,
toUserId: userId,
toUserName: nickName
},
order_type: System.FLOWCODE.DELIVERY
})
}
this.operationrecordDao.bulkCreate(logs);
break
case System.FLOWCODE.BIZ:
let delDatas = await this.bizoptDao.findAll({
demand_code: {
$in: numbers
}
});
if (delDatas.length !== numbers.length) {
throw new Error("请检查单号是否正确");
}
return this.db.transaction(async (t) => {
// 更新 操作人
await this.bizoptDao.updateByWhere({
salesman_id: userId,
salesman_opcode: opCode,
salesman_phone: phone,
salesman_name: nickName
}, {
demand_code: {
$in: numbers
}
}, t);
// 更新 状态
await this.bizoptDao.updateByWhere({
business_status: "beforeFollowUp"
}, {
$and: [
{
demand_code: {
$in: numbers
}
}, {
business_status: "received"
}
]
}, t);
// 插入 流转 记录
let logs = [];
for (let val of delDatas) {
logs.push({
demand_code: val.demand_code,
operator: {
id: pobj.userid,
username: pobj.username
},
operation_type: "distribution",
operation_details: {
isFirst: val.salesman_id ? true : false,
fromUserId: val.salesman_id,
fromUserName: val.salesman_name,
toUserId: userId,
toUserName: nickName
},
order_type: System.FLOWCODE.BIZ
})
}
this.operationrecordDao.bulkCreate(logs);
return "success"
});
break
}
return "SUCCESS"
async updateServer(qobj) {
var self = this;
var bill = await self.dao.findOneByDeliveryCodeAndBizId(qobj);
var obj = {};
var whereobj = {
"delivery_code": qobj.orderId,
"biz_id": qobj.bizId
};
// source_number
if (qobj.source_number && qobj.source_number != 'undefined') {
obj.source_number = qobj.source_number;
delete qobj.source_number;
}
// demand_code
if (qobj.demand_code && qobj.demand_code != 'undefined') {
obj.demand_code = qobj.demand_code;
delete qobj.demand_code;
}
// sku_code
if (qobj.sku_code && qobj.sku_code != 'undefined') {
obj.sku_code = qobj.sku_code;
delete qobj.sku_code;
}
// scheme_number
if (qobj.solutionBizId && qobj.solutionBizId != 'undefined') {
obj.scheme_number = qobj.solutionBizId;
delete qobj.solutionBizId;
}
// product_code
if (qobj.product_code && qobj.product_code != 'undefined') {
obj.product_code = qobj.product_code;
delete qobj.product_code;
}
// product_name
if (qobj.product_name && qobj.product_name != 'undefined') {
obj.product_name = qobj.product_name;
delete qobj.product_name;
}
// service_address
if (qobj.service_address && qobj.service_address != 'undefined') {
obj.service_address = qobj.service_address;
delete qobj.service_address;
}
// delivery_status
if (qobj.delivery_status && qobj.delivery_status != 'undefined') {
obj.delivery_status = qobj.delivery_status;
delete qobj.delivery_status;
}
// selling_price
if (qobj.selling_price && qobj.selling_price != 'undefined') {
obj.selling_price = qobj.selling_price;
delete qobj.selling_price;
}
// cost_price
if (qobj.cost_price && qobj.cost_price != 'undefined') {
obj.cost_price = qobj.cost_price;
delete qobj.cost_price;
}
// close_reason
if (qobj.close_reason && qobj.close_reason != 'undefined') {
obj.close_reason = qobj.close_reason;
delete qobj.close_reason;
}
// facilitator_id
if (qobj.facilitator_id && qobj.facilitator_id != 'undefined') {
obj.facilitator_id = qobj.facilitator_id;
delete qobj.facilitator_id;
}
// facilitator_name
if (qobj.facilitator_name && qobj.facilitator_name != 'undefined') {
obj.facilitator_name = qobj.facilitator_name;
delete qobj.facilitator_name;
}
// salesman_opcode
if (qobj.salesman_opcode && qobj.salesman_opcode != 'undefined') {
obj.salesman_opcode = qobj.salesman_opcode;
delete qobj.salesman_opcode;
}
// salesman_id
if (qobj.salesman_id && qobj.salesman_id != 'undefined') {
obj.salesman_id = qobj.salesman_id;
delete qobj.salesman_id;
}
// salesman_name
if (qobj.salesman_name && qobj.salesman_name != 'undefined') {
obj.salesman_name = qobj.salesman_name;
delete qobj.salesman_name;
} }
// salesman_phone
if (qobj.salesman_phone && qobj.salesman_phone != 'undefined') { async insertInfo(qobj) {
obj.salesman_phone = qobj.salesman_phone; var self = this;
delete qobj.salesman_phone; return self.db.transaction(async function (t) {
} return await self.dao.insertInfo(qobj, t);
// source_name });
if (qobj.source_name && qobj.source_name != 'undefined') {
obj.source_name = qobj.source_name;
delete qobj.source_name;
}
// master_source_number
if (qobj.master_source_number && qobj.master_source_number != 'undefined') {
obj.master_source_number = qobj.master_source_number;
delete qobj.master_source_number;
}
// settle_status
if (qobj.settle_status && qobj.settle_status != 'undefined') {
obj.settle_status = qobj.settle_status;
delete qobj.settle_status;
}
// settlebill_id
if (qobj.settlebill_id && qobj.settlebill_id != 'undefined') {
obj.settlebill_id = qobj.settlebill_id;
delete qobj.settlebill_id;
}
// delivery_man_id
if (qobj.delivery_man_id && qobj.delivery_man_id != 'undefined') {
obj.delivery_man_id = qobj.delivery_man_id;
delete qobj.delivery_man_id;
}
// delivery_man_name
if (qobj.delivery_man_name && qobj.delivery_man_name != 'undefined') {
obj.delivery_man_name = qobj.delivery_man_name;
delete qobj.delivery_man_name;
} }
// delivery_man_opcode
if (qobj.delivery_man_opcode && qobj.delivery_man_opcode != 'undefined') { async updateServer(qobj) {
obj.delivery_man_opcode = qobj.delivery_man_opcode; var self = this;
delete qobj.delivery_man_opcode; var bill = await self.dao.findOneByDeliveryCodeAndBizId(qobj);
var obj = {};
var whereobj = {
"delivery_code": qobj.orderId,
"biz_id": qobj.bizId
};
// source_number
if (qobj.source_number && qobj.source_number != 'undefined') {
obj.source_number = qobj.source_number;
delete qobj.source_number;
}
// demand_code
if (qobj.demand_code && qobj.demand_code != 'undefined') {
obj.demand_code = qobj.demand_code;
delete qobj.demand_code;
}
// sku_code
if (qobj.sku_code && qobj.sku_code != 'undefined') {
obj.sku_code = qobj.sku_code;
delete qobj.sku_code;
}
// scheme_number
if (qobj.solutionBizId && qobj.solutionBizId != 'undefined') {
obj.scheme_number = qobj.solutionBizId;
delete qobj.solutionBizId;
}
// product_code
if (qobj.product_code && qobj.product_code != 'undefined') {
obj.product_code = qobj.product_code;
delete qobj.product_code;
}
// product_name
if (qobj.product_name && qobj.product_name != 'undefined') {
obj.product_name = qobj.product_name;
delete qobj.product_name;
}
// service_address
if (qobj.service_address && qobj.service_address != 'undefined') {
obj.service_address = qobj.service_address;
delete qobj.service_address;
}
// delivery_status
if (qobj.delivery_status && qobj.delivery_status != 'undefined') {
obj.delivery_status = qobj.delivery_status;
delete qobj.delivery_status;
}
// selling_price
if (qobj.selling_price && qobj.selling_price != 'undefined') {
obj.selling_price = qobj.selling_price;
delete qobj.selling_price;
}
// cost_price
if (qobj.cost_price && qobj.cost_price != 'undefined') {
obj.cost_price = qobj.cost_price;
delete qobj.cost_price;
}
// close_reason
if (qobj.close_reason && qobj.close_reason != 'undefined') {
obj.close_reason = qobj.close_reason;
delete qobj.close_reason;
}
// facilitator_id
if (qobj.facilitator_id && qobj.facilitator_id != 'undefined') {
obj.facilitator_id = qobj.facilitator_id;
delete qobj.facilitator_id;
}
// facilitator_name
if (qobj.facilitator_name && qobj.facilitator_name != 'undefined') {
obj.facilitator_name = qobj.facilitator_name;
delete qobj.facilitator_name;
}
// salesman_opcode
if (qobj.salesman_opcode && qobj.salesman_opcode != 'undefined') {
obj.salesman_opcode = qobj.salesman_opcode;
delete qobj.salesman_opcode;
}
// salesman_id
if (qobj.salesman_id && qobj.salesman_id != 'undefined') {
obj.salesman_id = qobj.salesman_id;
delete qobj.salesman_id;
}
// salesman_name
if (qobj.salesman_name && qobj.salesman_name != 'undefined') {
obj.salesman_name = qobj.salesman_name;
delete qobj.salesman_name;
}
// salesman_phone
if (qobj.salesman_phone && qobj.salesman_phone != 'undefined') {
obj.salesman_phone = qobj.salesman_phone;
delete qobj.salesman_phone;
}
// source_name
if (qobj.source_name && qobj.source_name != 'undefined') {
obj.source_name = qobj.source_name;
delete qobj.source_name;
}
// master_source_number
if (qobj.master_source_number && qobj.master_source_number != 'undefined') {
obj.master_source_number = qobj.master_source_number;
delete qobj.master_source_number;
}
// settle_status
if (qobj.settle_status && qobj.settle_status != 'undefined') {
obj.settle_status = qobj.settle_status;
delete qobj.settle_status;
}
// settlebill_id
if (qobj.settlebill_id && qobj.settlebill_id != 'undefined') {
obj.settlebill_id = qobj.settlebill_id;
delete qobj.settlebill_id;
}
// delivery_man_id
if (qobj.delivery_man_id && qobj.delivery_man_id != 'undefined') {
obj.delivery_man_id = qobj.delivery_man_id;
delete qobj.delivery_man_id;
}
// delivery_man_name
if (qobj.delivery_man_name && qobj.delivery_man_name != 'undefined') {
obj.delivery_man_name = qobj.delivery_man_name;
delete qobj.delivery_man_name;
}
// delivery_man_opcode
if (qobj.delivery_man_opcode && qobj.delivery_man_opcode != 'undefined') {
obj.delivery_man_opcode = qobj.delivery_man_opcode;
delete qobj.delivery_man_opcode;
}
delete qobj.orderId;
obj.delivery_info = JSON.parse((JSON.stringify(bill.delivery_info) + JSON.stringify(qobj)).replace(/}{/, ','));
return self.db.transaction(async function (t) {
return await self.dao.updateServer(obj, whereobj, t);
});
} }
delete qobj.orderId;
obj.delivery_info = JSON.parse((JSON.stringify(bill.delivery_info) + JSON.stringify(qobj)).replace(/}{/, ','));
return self.db.transaction(async function (t) {
return await self.dao.updateServer(obj, whereobj, t);
});
}
} }
module.exports = DeliverybillService; module.exports = DeliverybillService;
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment