Stage coman receipts.
parent
fe5d2968f4
commit
317292b98f
|
@ -98,14 +98,13 @@ def determine_edi_action(edi_filename: pathlib.Path):
|
||||||
break
|
break
|
||||||
|
|
||||||
if transaction:
|
if transaction:
|
||||||
if transaction.startswith('SHP'):
|
if transaction.startswith('SHP'):#intersites
|
||||||
process_intersite_receipt(edi_filename)
|
process_intersite_receipt(edi_filename)
|
||||||
elif transaction.startswith('RA'):
|
elif transaction.startswith('RA'):#returns
|
||||||
process_return(edi_filename)
|
process_return(edi_filename)
|
||||||
# PO is used when Shandex does not receive a 943, will they receive 943s for comans?
|
elif transaction.startswith('PO'):#coman receipts
|
||||||
elif transaction.startswith('PO'):#TODO how are coman pos received
|
process_coman_receipt(edi_filename)
|
||||||
simple_email_notification.email_noticication(['bleeson@stashtea.com'],
|
#simple_email_notification.email_noticication(['bleeson@stashtea.com'],'Unknown Shandex 944',[transaction])
|
||||||
'Unknown Shandex 944',[transaction])
|
|
||||||
else:
|
else:
|
||||||
raise Exception('Unknown transaction type')
|
raise Exception('Unknown transaction type')
|
||||||
else:
|
else:
|
||||||
|
@ -261,6 +260,77 @@ def process_intersite_receipt(edi_filename: pathlib.Path):
|
||||||
import_receipt(warehouse_receipt)
|
import_receipt(warehouse_receipt)
|
||||||
|
|
||||||
|
|
||||||
|
def process_coman_receipt(edi_filename: pathlib.Path):
|
||||||
|
"""
|
||||||
|
Convert a specific EDI file into an import file.
|
||||||
|
"""
|
||||||
|
def fix_uom(uom):
|
||||||
|
x3_uom = ''
|
||||||
|
if uom == 'CA':
|
||||||
|
x3_uom = 'CS'
|
||||||
|
else:
|
||||||
|
x3_uom = uom
|
||||||
|
return x3_uom
|
||||||
|
|
||||||
|
warehouse_receipt = Receipt()
|
||||||
|
shandex_pohnum = ''
|
||||||
|
for fields in tokens_from_edi_file(edi_filename):
|
||||||
|
if fields[0] == "W17":
|
||||||
|
_, _, rcpdat, _, pohnum = fields[:5]
|
||||||
|
warehouse_receipt.sdhnum = get_coman_shipment(pohnum)
|
||||||
|
validated = check_shipment_status(warehouse_receipt.sdhnum)
|
||||||
|
warehouse_receipt.header.rcpdat = datetime.datetime.strptime(
|
||||||
|
rcpdat, "%Y%m%d"
|
||||||
|
).date() # 20230922
|
||||||
|
if fields[0] == "N9" and fields[1] == "PO":
|
||||||
|
shandex_pohnum = fields[2]
|
||||||
|
if fields[0] == "W07":
|
||||||
|
# W07*2025*CA**PN*10077652321019*LT*18JUN2027SE***UK*10077652321019
|
||||||
|
# N9*LI*1
|
||||||
|
_, qty_str, uom, _, _, gtin, _, lot = fields[:8]
|
||||||
|
itmref = gtin_to_sku(gtin)['ITMREF_0']
|
||||||
|
subdetail = ReceiptSubDetail(
|
||||||
|
pcu=fix_uom(uom),
|
||||||
|
qtypcu=int(qty_str),
|
||||||
|
lot=lot
|
||||||
|
)
|
||||||
|
if fields[0] == 'N9' and fields[1] == 'LI':
|
||||||
|
# N9*LI*1000
|
||||||
|
#line = fields[2] #This line isn't the line number from X3, it needs to be looked up
|
||||||
|
line = find_shipment_line(warehouse_receipt.sdhnum, itmref)
|
||||||
|
warehouse_receipt.append(
|
||||||
|
ReceiptDetail(
|
||||||
|
sdhnum=warehouse_receipt.sdhnum,
|
||||||
|
poplin=int(line),
|
||||||
|
itmref=itmref,
|
||||||
|
uom=fix_uom(uom),
|
||||||
|
qtyuom=int(qty_str)
|
||||||
|
),
|
||||||
|
subdetail,
|
||||||
|
)
|
||||||
|
time_stamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
|
||||||
|
import_receipt(warehouse_receipt)
|
||||||
|
|
||||||
|
|
||||||
|
def get_coman_shipment(pohnum):
|
||||||
|
with yamamotoyama.get_connection() as data_base:
|
||||||
|
result = data_base.query(
|
||||||
|
"""
|
||||||
|
select
|
||||||
|
[SDH].[SDHNUM_0]
|
||||||
|
from [PROD].[PORDER] [POH]
|
||||||
|
join [PROD].[SORDER] [SOH]
|
||||||
|
on [SOH].[CUSORDREF_0] = [POH].[POHNUM_0]
|
||||||
|
join [PROD].[SDELIVERY] [SDH]
|
||||||
|
on [SDH].[SOHNUM_0] = [SOH].[SOHNUM_0]
|
||||||
|
where
|
||||||
|
[POH].[POHNUM_0] = :order
|
||||||
|
""",
|
||||||
|
order=pohnum,
|
||||||
|
).first()
|
||||||
|
return result['SDHNUM_0']
|
||||||
|
|
||||||
|
|
||||||
def import_receipt(warehouse_receipt):
|
def import_receipt(warehouse_receipt):
|
||||||
"""send the shipment information to the shandex staging database"""
|
"""send the shipment information to the shandex staging database"""
|
||||||
with yamamotoyama.get_connection() as data_base:
|
with yamamotoyama.get_connection() as data_base:
|
||||||
|
@ -640,6 +710,7 @@ class Receipt:
|
||||||
shipment=self.sdhnum,
|
shipment=self.sdhnum,
|
||||||
).first()
|
).first()
|
||||||
|
|
||||||
|
|
||||||
def _fill_info_from_shipment(self):
|
def _fill_info_from_shipment(self):
|
||||||
"""
|
"""
|
||||||
When we learn the SOHNUM, we can copy information from the sales order.
|
When we learn the SOHNUM, we can copy information from the sales order.
|
||||||
|
|
Loading…
Reference in New Issue