Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Kunto
/
backoffice
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit ed7bdb93
authored
Sep 16, 2019
by
Solo Group
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
advice
1 parent
e57ca22c
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
172 additions
and
51 deletions
src/agratek/api/merchant/views/api_merchant.py
src/agratek/api/merchant/views/api_payment.py
src/agratek/api/merchant/views/np/__init__.py
src/agratek/api/merchant/views/np/advice.py
src/agratek/api/merchant/views/api_merchant.py
View file @
ed7bdb9
...
...
@@ -5,7 +5,7 @@ from opensipkd.base.tools.api import (auth_from_rpc,
JsonRpcProdukNotFoundError
,
JsonRpcCustomerNotFoundError
,
JsonRpcParameterNotFound
)
from
opensipkd.pasar.models
import
Produk
,
PartnerProduk
from
opensipkd.pasar.models.produk
import
H2hArInvoice
,
H2hArInvoiceDet
,
PartnerLog
from
opensipkd.pasar.models.produk
import
H2hArInvoice
,
H2hArInvoiceDet
,
PartnerLog
,
PartnerPay
from
pyramid_rpc.jsonrpc
import
jsonrpc_method
from
..tools
import
JsonRpcInvoiceFoundError
,
JsonRpcError
...
...
@@ -256,6 +256,92 @@ def purchase(request, data, **kwargs):
return
data
def
payment_advice
(
dat
):
if
not
dat
[
'tx_id'
]:
dat
[
"status"
]
=
"FAILED"
dat
[
"message"
]
=
"Parameter tidak lengkap"
return
dat
tx_id
=
dat
[
"tx_id"
]
inv_no
=
dat
[
"invoice_no"
]
inv
=
PartnerPay
.
query_txid
(
tx_id
)
.
filter_by
(
cust_inv_no
=
inv_no
)
.
first
()
if
not
inv
:
dat
[
"status"
]
=
"FAILED"
dat
[
"message"
]
=
"Data Tagihan {} tidak ditemukan"
.
format
(
inv_no
)
return
dat
vend_produk
=
PartnerProduk
.
query
()
.
filter_by
(
produk_id
=
inv
.
produk_id
,
partner_id
=
inv
.
vendor_id
)
.
first
()
if
not
vend_produk
:
dat
[
"status"
]
=
"FAILED"
dat
[
"message"
]
=
"Data Produk tidak ditemukan"
.
format
(
inv_no
)
return
dat
vendor_nm
=
vend_produk
.
modules
modul
=
'.advice'
pckgs
=
'agratek.api.merchant.views.{}'
.
format
(
vendor_nm
)
moduls
=
import_module
(
modul
,
pckgs
)
typ
=
'proses'
cls
=
hasattr
(
moduls
,
typ
)
and
getattr
(
moduls
,
typ
)
or
None
if
cls
:
order
=
cls
(
inv
,
vend_produk
)
return
order
return
dict
()
def
purchase_advice
(
customer
,
dat
):
inv_no
=
dat
[
"invoice_no"
]
invoice
=
H2hArInvoice
.
query
()
\
.
filter_by
(
cust_inv_no
=
inv_no
,
customer_id
=
customer
.
id
)
.
first
()
if
not
invoice
:
return
dict
(
status
=
"FAILED"
,
message
=
"Invoice
%
s Tidak Ditemukan"
%
inv_no
)
else
:
qry
=
H2hArInvoiceDet
.
query
()
.
filter_by
(
ar_invoice_id
=
invoice
.
id
)
r_prod
=
[]
if
"produk"
in
dat
:
prods
=
[]
for
p
in
dat
[
"produk"
]:
row
=
qry
.
join
(
Produk
,
Produk
.
id
==
H2hArInvoiceDet
.
produk_id
)
\
.
filter
(
Produk
.
kode
==
p
[
"denom"
],
H2hArInvoiceDet
.
id_pel
==
p
[
"id_pel"
])
.
first
()
if
not
row
:
status
=
"FAILED"
message
=
"Produk tidak ada"
p
.
update
(
dict
(
status
=
status
,
message
=
message
))
else
:
status
=
row
.
status
==
-
1
and
'PENDING'
\
or
row
.
status
==
1
and
'SUCCESS'
\
or
row
.
status
==
-
2
and
'PENDING'
\
or
"FAILED"
p
.
update
(
dict
(
subtotal
=
(
row
.
amt_sell
or
0
)
+
(
row
.
discount
or
0
),
discount
=
row
.
discount
or
0
,
total
=
row
.
amt_sell
,
status
=
status
,
serial_number
=
row
.
serial_number
or
""
,
)
)
r_prod
.
append
(
p
)
else
:
for
p
in
qry
.
all
():
produk
=
Produk
.
query
()
.
\
filter
(
Produk
.
id
==
p
.
produk_id
)
.
first
()
status
=
p
.
status
==
-
1
and
'PENDING'
or
p
.
status
==
1
and
'SUCCESS'
\
or
p
.
status
==
-
2
and
'PENDING'
or
"FAILED"
r_prod
.
append
(
dict
(
denom
=
produk
.
kode
,
id_pel
=
p
.
id_pel
,
subtotal
=
(
p
.
amt_sell
or
0
)
+
(
p
.
discount
or
0
),
discount
=
p
.
discount
or
0
,
total
=
p
.
amt_sell
,
status
=
status
,
serial_number
=
p
.
serial_number
or
""
,
)
)
dat
[
"produk"
]
=
r_prod
return
dat
@jsonrpc_method
(
method
=
'advice'
,
endpoint
=
'api-merchant'
)
def
advice
(
request
,
data
):
"""
...
...
@@ -295,55 +381,12 @@ def advice(request, data):
dat
[
"status"
]
=
"FAILED"
dat
[
"message"
]
=
"Parameter tidak lengkap"
else
:
inv_no
=
dat
[
"invoice_no"
]
invoice
=
H2hArInvoice
.
query
()
\
.
filter_by
(
cust_inv_no
=
inv_no
,
customer_id
=
customer
.
id
)
.
first
()
if
not
invoice
:
dat
[
"status"
]
=
"FAILED"
dat
[
"message"
]
=
"Invoice
%
s Tidak Ditemukan"
%
inv_no
if
'tx_id'
in
dat
:
dat
.
update
(
payment_advice
(
dat
))
else
:
qry
=
H2hArInvoiceDet
.
query
()
.
filter_by
(
ar_invoice_id
=
invoice
.
id
)
r_prod
=
[]
if
"produk"
in
dat
:
prods
=
[]
for
p
in
dat
[
"produk"
]:
row
=
qry
.
join
(
Produk
,
Produk
.
id
==
H2hArInvoiceDet
.
produk_id
)
\
.
filter
(
Produk
.
kode
==
p
[
"denom"
],
H2hArInvoiceDet
.
id_pel
==
p
[
"id_pel"
])
.
first
()
if
not
row
:
status
=
"FAILED"
message
=
"Produk tidak ada"
p
.
update
(
dict
(
status
=
status
,
message
=
message
))
else
:
status
=
row
.
status
==
-
1
and
'PENDING'
or
row
.
status
==
1
and
'SUCCESS'
\
or
row
.
status
==
-
2
and
'PENDING'
or
"FAILED"
p
.
update
(
dict
(
subtotal
=
(
row
.
amt_sell
or
0
)
+
(
row
.
discount
or
0
),
discount
=
row
.
discount
or
0
,
total
=
row
.
amt_sell
,
status
=
status
,
serial_number
=
row
.
serial_number
or
""
,
)
)
r_prod
.
append
(
p
)
else
:
for
p
in
qry
.
all
():
produk
=
Produk
.
query
()
.
\
filter
(
Produk
.
id
==
p
.
produk_id
)
.
first
()
status
=
p
.
status
==
-
1
and
'PENDING'
or
p
.
status
==
1
and
'SUCCESS'
\
or
p
.
status
==
-
2
and
'PENDING'
or
"FAILED"
r_prod
.
append
(
dict
(
denom
=
produk
.
kode
,
id_pel
=
p
.
id_pel
,
subtotal
=
(
p
.
amt_sell
or
0
)
+
(
p
.
discount
or
0
),
discount
=
p
.
discount
or
0
,
total
=
p
.
amt_sell
,
status
=
status
,
serial_number
=
p
.
serial_number
or
""
,
)
)
dat
[
"produk"
]
=
r_prod
r_data
.
append
(
dat
)
i
+=
1
dat
.
update
(
purchase_advice
(
customer
,
dat
))
r_data
.
append
(
dat
)
i
+=
1
data
=
is_list
and
r_data
or
r_data
[
0
]
return
data
#
...
...
src/agratek/api/merchant/views/api_payment.py
View file @
ed7bdb9
...
...
@@ -159,7 +159,6 @@ def register(request, data, **kwargs):
if
not
vendor_produk
:
raise
JsonRpcProdukNotFoundError
values
=
set_register_values
(
dat
,
customer
)
credit_card
=
"credit_card"
in
dat
and
dat
[
"credit_card"
]
or
{}
if
credit_card
:
...
...
src/agratek/api/merchant/views/np/__init__.py
View file @
ed7bdb9
...
...
@@ -507,10 +507,76 @@ class Vendor(VendorClass): # VendorClass
self
.
set_static_params
()
Nicepay
.
set
(
"tXid"
,
self
.
invoice_det
.
vend_inv_no
)
self
.
request
=
Nicepay
.
requestData
log
.
info
(
self
.
request
)
self
.
save_log
(
"advice"
)
self
.
response
=
Nicepay
.
niceInquiry
()
result_data
=
Nicepay
.
niceInquiry
()
response
=
json
.
loads
(
result_data
)
self
.
response
=
response
log
.
info
(
"NP RESPONSE: {}"
.
format
(
json
.
dumps
(
self
.
response
)))
self
.
save_log
(
"advice"
)
# if 'resultCd' not in response:
# self.result = dict(
# error="Connection Timeout. Please Try Again!"
# )
# self.save_log(typ="inquiry")
# return
# result = dict()
# try:
# result_code = int(response['resultCd'])
# except:
# result_code = 999
#
# result["code"] = result_code
# result["message"] = response['resultMsg']
# if result_code == 0: # or self.pay_method == '01':
# result["code"] = 0
# result["message"] = 'SUCCESS'
# time_stamp = datetime.now().strftime('%Y%m%d%H%M%S')
# key = sha256("{}{}".format(self.cust_inv_no, time_stamp))
# tx_id = "{}{}".format(self.invoice_det.customer.users.user_name, key)
# result["tx_id"] = tx_id
# result["invoice_no"] = response['referenceNo']
# result["amount"] = response['amt']
# result["trans_date"] = response['transDt']
# result["trans_time"] = response['transTm']
# result["description"] = response['description']
# self.invoice_det.trans_dt = response["transDt"]
# self.invoice_det.trans_tm = response["transTm"]
# self.invoice_det.tx_id = tx_id
# self.vend_inv_no = response["tXid"]
# if self.pay_method == "02":
# result["va"] = dict(
# vacct_no=response['vacctNo'],
# valid_date=response['vacctValidDt'],
# valid_time=response['vacctValidTm'],
# )
# self.invoice_det.card_no = response['vacctNo']
#
# elif self.pay_method == "03":
# result["cvs"] = dict(
# pay_no=response['payNo'],
# valid_date=response['payValidDt'],
# valid_time=response['payValidTm'],
# )
# self.invoice_det.card_no = response['payNo']
# elif self.pay_method == "04":
# # clickpay
# result["receipt_code"]=response['receiptCode']
# elif self.pay_method == "05":
# # e-wallet
# result["receipt_code"]='receiptCode' in response and response['receiptCode'] or ''
# elif self.pay_method == "06":
# # akulaku
# pass
# self.result = result
self
.
save_log
(
"advice"
)
self
.
result
=
get_result
(
self
.
response
,
self
.
pay_method
)
self
.
result
[
"tx_id"
]
=
self
.
invoice_det
.
tx_id
self
.
save_log
(
"advice"
)
def
notify
(
self
,
data
):
...
...
src/agratek/api/merchant/views/np/advice.py
0 → 100644
View file @
ed7bdb9
import
logging
from
agratek.api.merchant.views.notify_vendor
import
payment_notify
from
opensipkd.pasar.models.produk
import
PartnerPay
,
PartnerProduk
log
=
logging
.
getLogger
(
__name__
)
from
.
import
Vendor
def
proses
(
invoice_det
,
vendor_produk
):
vendor
=
Vendor
(
vendor_produk
,
invoice_det
)
vendor
.
advice
()
return
invoice_det
.
advice
[
"result"
]
Write
Preview
Markdown
is supported
Attach a file
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 post a comment