Get update_joutfx_chk_cmd (not excuted)
```
UPDATE joutfx
SET joutfx_chk = 'V'
WHERE joutfx_loc = @joutfx_loc
AND joutfx_ref_no = @joutfx_ref_no
```
For each file
check file name (init_websal)
write log
Read file line(imp_websal().prepare_dt().dt_websal)
For each line (dt_websal)
Start ref_valid()
Check length
If length not valid
invalid_format
Start ref_valid_websal()
if dr_tn_no <> ""
if not isValidCode(joutfx, "joutfx_loc", "joutfx_ref_no")
"TN# Not Found in Transfer Journal"
if not isValidCode(loctab, "loctab_code") (get loctab_country, loctab_curr)
"Invalid Location Code"
get_vatrate(loctab_country)
hd_exrate = get_exrate(loctab_curr)
if hd_exrate = 0
"Exchange Rate Not Found"
if not isValidCode(paytab, "paytab_curr", "paytab_location", "paytab_code")
"Invalid Payment Type"
if not isValidCode(jouinv, "jouinv_loc", "jouinv_no")
"Sales Memo Already Exist"
tmp_month = get_itmbal_last_end_month(loc)
"Trx. Month MUST > Last End Month" & " (" & tmp_month & ")"
If not valid validate_item_all(dr_item, dr_color, dr_size, "")
"Invalid Item Code"/"Invalid Color Code"/"Invalid Size Code"
if not isValidCode(itmean, "itmean_code", dr_upc)
"Invalid UPC Code"
if not dr_disc_code <> "" & isValidCode(disctb, "disctb_code", dr_disc_code)
"Invalid Discount Code"
if not dr_vip_no <> "" & isValidCode(vip, "vip_no", dr_vip_no)
"Invalid Member No."
if not process_return AND dr_sales_staff <> ""
if not isValidCode(salady, "salady_code", dr_sales_staff)
"Invalid Sales Staff Code"
if process_return
Qty. Must Be Negative in Sales Return
if not isValidCode(reason, "reason_code", dr_return_reason)
"Invalid Return Reason Code"
isValidCode(itmast, "itmast_item_no", item)
dr.Item("avg_cost") = tmp_dt.Rows(0).Item("itmast_avg_cost_bx")
dr.Item("std_cost") = tmp_dt.Rows(0).Item("itmast_std_cost_bx")
dr.Item("stock_ind") = tmp_dt.Rows(0).Item("itmast_stock_ind")
if dr.Item("stock_ind") = "S"
if not (dr_list_prx = 0 AND dr_tot_amt = 0)
"Coupon Item Should Be Zero Price"
If tax_code <> ""
If isValidCode(taxtab, "taxtab_code", tax_code)
tax_rate = tmp_dt(0).Item("taxtab_per")
tax_amt = Math.Round(CDec(dr_tot_amt) / ((100 + tax_rate) / 100) * (tax_rate / 100), 2)
dr.Item("item_tax_amt") = tax_amt
Check loc, ref_no
dr_websal_ref_item = dt_websal with loc, ref_no
if dr_websal_ref_item.length = 0
Failure
End ref_valid()
Begin_Transaction
START import_ref(loc, ref)
START prepare_ref_info()
prepare ref_trx_date, ref_vip_no
prepare ref_tot_amt: sum of item_tot_amt
prepare ref_tot_tax_amt: sum of item_tax_amt
prepare_ref_dt()
prepare ref_gst_per
tn_no = dr_websal_ref_item(0).tn_no
For each row (dr) in dr_websal_ref_item:
START import_itm_base_tables(dr):
START insert_**jouinv**(dr)
START insert_**joudis**(dr)
If ref_vip_no <> ""
START insert_**vipact**(dr)
If stock_ind <> "S"
START update_**itmdtl**(dr)
START insert_**websal**(dr)
If serial_no <> ""
START insert_**serial**(dr)
If process_return
START insert_**joutfx**(dr)
START import_ref_base_tables(loc, ref, tn_no):
START insert_**joupay**(loc, ref)
If ref_vip_no <> ""
START insert_**vipsal**(loc, ref)
START update_**vipfig**(loc, ref)
START update_**salsum**(loc, ref)
'auto receive
If Not process_return
If tn_no <> ""
If dt_tfxrec.Rows.Count = 0
For each row (dr) in dt_joutfx.Rows
Start insert_**tfxrec**(dr)
Start update_**joutfx_chk**()
(USE update_joutfx_chk_cmd)
#### REF
prepare_ref_dt()
dt_joutfx:
SELECT joutfx.*, itmast_avg_cost_bx AS unit_cost
FROM joutfx
LEFT JOIN itmast
ON itmast_item_no = joutfx_item_no
WHERE joutfx_loc = ' loc '
AND joutfx_ref_no = ' ref '
dt_tfxrec:
SELECT * FROM tfxrec
WHERE tfxrec_loc = ' loc '
AND tfxrec_ref_no = ' ref '`