changes
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
# Step 7 — Tom (Shipper) walks the delivery from draft to delivered.
|
||||
# Test:
|
||||
# A) Delivery exists post-job-done — what fields visible? what state?
|
||||
# B) Try action_start_route without driver → must block
|
||||
# C) Assign driver + vehicle + box count, schedule
|
||||
# D) Try action_mark_delivered without POD → must block
|
||||
# E) Capture POD, mark delivered, verify cert + chain of custody
|
||||
|
||||
so = env['sale.order'].browse(423) # Step 3's SO
|
||||
job = env['fp.job'].search([('sale_order_id', '=', so.id)], limit=1)
|
||||
Delivery = env['fusion.plating.delivery']
|
||||
delivery = Delivery.search([('x_fc_job_id', '=', job.id)], limit=1)
|
||||
print(f'[Tom] Looking at delivery {delivery.name}')
|
||||
print()
|
||||
|
||||
print('Visible header on delivery form:')
|
||||
print(f' partner_id: {delivery.partner_id.name}')
|
||||
print(f' delivery_address_id: {delivery.delivery_address_id.name if delivery.delivery_address_id else None}')
|
||||
print(f' contact_name: {delivery.contact_name}')
|
||||
print(f' contact_phone: {delivery.contact_phone}')
|
||||
print(f' job_ref: {delivery.job_ref}')
|
||||
print(f' state: {delivery.state}')
|
||||
print(f' scheduled_date: {delivery.scheduled_date}')
|
||||
print(f' assigned_driver_id: {delivery.assigned_driver_id.name if delivery.assigned_driver_id else None}')
|
||||
print(f' vehicle_id: {delivery.vehicle_id.name if delivery.vehicle_id else None}')
|
||||
print(f' source_facility_id: {delivery.source_facility_id.name if delivery.source_facility_id else None}')
|
||||
print(f' tdg_required: {delivery.tdg_required}')
|
||||
print(f' pod_id: {delivery.pod_id.name if delivery.pod_id else None}')
|
||||
|
||||
# Tom schedules.
|
||||
print()
|
||||
print('[Tom] Clicks "Schedule"')
|
||||
delivery.action_schedule()
|
||||
print(f' state={delivery.state}')
|
||||
|
||||
# Tom tries to start route WITHOUT assigning a driver.
|
||||
print()
|
||||
print('[Tom] Tries Start Route without driver:')
|
||||
try:
|
||||
delivery.action_start_route()
|
||||
print(' ❌ Got past driver gate without assignment!')
|
||||
except Exception as e:
|
||||
print(f' ✓ blocked: {str(e)[:120]}')
|
||||
|
||||
# Assign a driver (any user).
|
||||
driver = env.user
|
||||
delivery.assigned_driver_id = driver.id
|
||||
delivery.x_fc_box_count_out = 3
|
||||
print()
|
||||
print(f'[Tom] Assigned driver: {driver.name}, box_count_out=3')
|
||||
|
||||
# Now start route.
|
||||
print()
|
||||
print('[Tom] Clicks Start Route:')
|
||||
try:
|
||||
delivery.action_start_route()
|
||||
print(f' state={delivery.state}')
|
||||
print(f' custody events: {delivery.custody_event_count}')
|
||||
except Exception as e:
|
||||
print(f' ❌ {e}')
|
||||
|
||||
# Tom tries to mark delivered without POD.
|
||||
print()
|
||||
print('[Tom] Tries Mark Delivered without POD:')
|
||||
try:
|
||||
delivery.action_mark_delivered()
|
||||
print(' ❌ Got past POD gate without capture!')
|
||||
except Exception as e:
|
||||
print(f' ✓ blocked: {str(e)[:120]}')
|
||||
|
||||
# Tom captures POD.
|
||||
POD = env['fusion.plating.proof.of.delivery']
|
||||
pod = POD.create({
|
||||
'delivery_id': delivery.id,
|
||||
'recipient_name': 'Mark at receiving',
|
||||
})
|
||||
delivery.pod_id = pod.id
|
||||
print()
|
||||
print(f'[Tom] Captured POD: {pod.name}, recipient="{pod.recipient_name}"')
|
||||
|
||||
# Mark delivered.
|
||||
print()
|
||||
print('[Tom] Clicks Mark Delivered:')
|
||||
try:
|
||||
delivery.action_mark_delivered()
|
||||
print(f' state={delivery.state}, delivered_at={delivery.delivered_at}')
|
||||
print(f' custody events: {delivery.custody_event_count}')
|
||||
except Exception as e:
|
||||
print(f' ❌ {e}')
|
||||
|
||||
env.cr.commit()
|
||||
print()
|
||||
print('== Step 7 complete ==')
|
||||
Reference in New Issue
Block a user