Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Z
zhichan
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
蒋勇
zhichan
Commits
82bc52b0
Commit
82bc52b0
authored
Mar 31, 2020
by
孙亚楠
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dd
parent
bb892e65
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
204 additions
and
2 deletions
+204
-2
xgg-admin/app/base/service/impl/invoice/invoiceSve.js
+168
-2
xgg-admin/app/base/utils/province/province.js
+36
-0
No files found.
xgg-admin/app/base/service/impl/invoice/invoiceSve.js
View file @
82bc52b0
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
xgg-admin/app/base/utils/province/province.js
0 → 100644
View file @
82bc52b0
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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment