Commit 82bc52b0 by 孙亚楠

dd

parent bb892e65
const system = require("../../../system");
const ServiceBase = require("../../svems.base");
const settings = require("../../../../config/settings");
const PROVINCE_CODE_MAP = require("../../../utils/province/province.js");
var moment = require('moment');
class InvoiceService extends ServiceBase {
constructor() {
super();
......@@ -45,7 +46,19 @@ class InvoiceService extends ServiceBase {
async handleStatus(params) {
var rs = await this.callms("invoice", "handleStatus", params);
return rs;
if(params.stataus=="1120"){
try {
if(res.stataus===0){
await uploadDetailSve(params.invoice_id);
return rs;
}else{
return system.getResult(null,`提交发票失败 非法的发票ID`);
}
} catch (error) {
console.log(error);
return system.getResult("提交财税系统失败,请联系管理员");
}
}
}
async invoice(params) {
......@@ -80,6 +93,158 @@ class InvoiceService extends ServiceBase {
row.assign_user_name = assignUser.realName || "";
}
}
/**
* fn:为了对接财务宝 格式化发票类型
*
* @param {*} invoice_type
*/
formatInvoiceType (invoicesummaryinfo){
let _billType = null;
if(!invoicesummaryinfo.invoice_type){
return system.getResult(null,`系统错误 发票类型错误`);
}
if(invoicesummaryinfo['invoice_type']=='10'){
_billType = `1`;
}else if(invoicesummaryinfo['invoice_type']=='20'){
_billType = `2`;
}else if(invoicesummaryinfo['invoice_type']=='30'){
_billType = `0`;
}else{
return system.getResult(null,`系统错误 发票类型错误`);
}
return _billType;
}
/**
* fn:为了对接财务宝 格式化发票联次
*
* @param {*} invoice_type
*/
formatInvoiceJoin (invoicesummaryinfo){
let invoiceOrder = null;
if(!invoicesummaryinfo.invoice_join){
return system.getResult(null,`系统错误 发票联次错误`);
}
if(invoicesummaryinfo['invoice_join']=='10'){
invoiceOrder = `3`;
}else if(invoicesummaryinfo['invoice_join']=='20'){
invoiceOrder = `0`;
}else if(invoicesummaryinfo['invoice_join']=='30'){
invoiceOrder = `1`;
}else if(invoicesummaryinfo['invoice_join']=='40'){
invoiceOrder=`2`;
}else{
return system.getResult(null,`系统错误 发票类型错误`);
}
return invoiceOrder;
}
/**
* fn:为了对接财务宝 格式化发票摘要
* @param {*} invoicesummaryinfo
*/
formatSummary(invoicesummaryinfo){
if(!invoicesummaryinfo.summary){
return system.getResult("系统错误 发票摘要信息错误");
}
let _summary = JSON.parse(invoicesummaryinfo.summary);
let _res = [];
for(let item of _summary){
let temp = {
abstractMsg:item.summaryInfo,
attr:{"standard":item.category,"unit":item.unit,"number":item.number,"unit_price":item.unitPrice},
amount:item.amount,
tax:item.taxAmount,
totalPrice:Number(item.amount)+Number(item.tax),
taxRate:item.taxRate,
abstractType:item.summaryType
};
_res.push(temp);
}
return _res;
}
/**
* fn:提交发票道财税系统
* @param {*} invoice_id
*/
async uploadDetailSve(invoice_id){
let invoice = await this.callms("invoice", "invoice", {id:invoice_id});
if(!invoice || !invoice.data){
return system.getResult(`发票不存在`);
}
//获取个体户信息 拿到customer 在order服务下 参数:通过merchant_credit_code或者是merchant_id (购买方商户)
if(!invoice.data.invoicesummaryinfo ||!invoice.data.invoicesummaryinfo.merchant_credit_code ){
return system.getResult(`发票信息错误`);
}
let businessmen = await this.callms("order", "queryObusinessmenByCreditCode", {credit_code:invoice.data.invoicesummaryinfo.merchant_credit_code});
//获取交付商信息 拿到companyID 在common服务下 参数:通过deliver_id
if(!invoice.data.invoicedeliver[0].deliver_id){
return system.getResult(`交付商不存在`);
}
var deliver = await this.callms("common", "deliverInfo", {id: invoice.data.invoicedeliver[0].deliver_id});
let _params=await this.buildParams(businessmen.data,invoice.data,deliver.data) || {};
try {
if(!_params){
console.log("推送失败,参数错误");
return system.getResult("推送失败,参数错误");
}
let url = settings.ntapi().createCustomer;
let res = await this.callApi(url, data, "提交发票");
console.log(res);
if(!res || !res.data) {
return system.getResult(null, "提交发票失败");
}
return system.getResultSuccess();
} catch (error) {
console.log(error);
return system.getResult(null,`系统错误 推送失败`);
}
}
// http://nga-api.gongsibao.com/nga-api/uploadDetail
/**
* 推送票据
*/
async buildParams(businessmen,invoice,deliver){
let _invoicesummaryinfo = invoice.invoicesummaryinfo || null;
if(!_invoicesummaryinfo){
return system.getResult(null, `系统错误 发票信息错误`);
}
let params = {
companyId:deliver.nt_company_id, //公司ID
customerId:businessmen.customer_id, //客户ID
uploadPeriod:moment(businessmen.create_account_time).format('YYYYMM'), //上传账期
imageName: invoice['invoice_img'].slice(str.lastIndexOf("/")+1,-1) ||"", //图片名称
imageBasename:invoice['invoice_img'] || "", //图片url
billType:formatInvoiceType(_invoicesummaryinfo), //发票类型
isDaikai:`1`, //是否代开 1:yes 0:no
signDate:moment(_invoicesummaryinfo.invoice_time).format("YYYY-MM-DD"), //开票时间
invoiceCode:_invoicesummaryinfo.invoice_no, //发票代码
invoiceNumber:_invoicesummaryinfo.invoice_number, //发票号码
invoiceOrder:formatInvoiceJoin(_invoicesummaryinfo), //发票联次
payName:_invoicesummaryinfo.merchant_name,
receiveName:_invoicesummaryinfo.businessmen_name,
payBank:_invoicesummaryinfo.merchant_bank,
payAccount:_invoicesummaryinfo.merchant_account,
payTel:_invoicesummaryinfo.merchant_mobile,
payAddress:_invoicesummaryinfo.merchant_addr,
payAccountAame:"", //xxxx
payerTaxIdentificationNumber:_invoicesummaryinfo.merchant_credit_code,
receiveBank:_invoicesummaryinfo.businessmen_bank,
receiveAccount:_invoicesummaryinfo.businessmen_account,
receiveTel:_invoicesummaryinfo.businessmen_mobile,
receiveAddress:_invoicesummaryinfo.businessmen_addr,
receiveTaxIdentificationNumber:_invoicesummaryinfo.businessmen_credit_code,
province:PROVINCE_CODE_MAP[_invoicesummaryinfo.province],
receiveAccountName:"", //xxxx
sourceClient:"0", //票据来源
createDate:moment(_invoicesummaryinfo.created_at).format("YYYY-MM-DD"), //创建时间
list:formatSummary(_invoicesummaryinfo)
}
return params;
}
}
module.exports = InvoiceService;
\ No newline at end of file
module.exports={
"北京市": "1100",
"天津市": "1200",
"河北省": "1300",
"山西省": "1400",
"内蒙古自治区": "1500",
"辽宁省": "2100",
"吉林省": "2200",
"黑龙江省": "2300",
"上海市": "3100",
"江苏省": "3200",
"浙江省": "3300",
"安徽省": "3400",
"福建省": "3500",
"江西省": "3600",
"山东省": "3700",
"河南省": "4100",
"湖北省": "4200",
"湖南省": "4300",
"广东省": "4400",
"广西壮族自治区": "4500",
"重庆市": "5000",
"四川省": "5100",
"贵州省": "5200",
"云南省": "5300",
"西藏自治区": "5400",
"陕西省": "6100",
"甘肃省": "6200",
"青海省": "6300",
"宁夏回族自治区": "6400",
"新疆维吾尔自治区": "6500",
"台湾省": "7100",
"香港特别行政区": "8100",
"澳门特别行政区": "8200",
}
\ 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