How to Manage Packing Lists
by OSOE Project
This visual guide is part of a collection of documents created by the One
Student One ERP (OSOE) project in collaboration with Institut Mines Telecom,
Telecom Bretagne, Dresden University of Technology and the South Westfalia
University of Applied Sciences. It can be used to teach modern ERP theory and
practice to undergraduate students or professionals.
Copyright: You are free to copy, distribute, display, and perform the work
under the following conditions: you must attribute the work in the manner
specified by the author or licensor; you may not use this work for any
commercial purposes including training, consulting, advertising,
self-advertising, publishing, etc.; you may not alter, transform, or build upon
this work. For any reuse or distribution, you must make clear to others the
license terms of this work. Any of these conditions can be waived if you get
permission from the copyright holder through a commercial license or an
educational license. For more information, contact info@nexedi.com
init
openAndWait ${base_url}/Zuite_createFunctionalTestUser
verifyTextPresent Done.
Wait for activities
openAndWait ${base_url}/Zuite_setUpSaleOrderTest
verifyTextPresent Init Ok
Wait for activities
openAndWait ${base_url}/Zuite_setUpSalePackingListTest
verifyTextPresent Init Ok
Wait for activities
Login As Functional Test User
Agenda
• How to reach a Packing List
• How to define Packing Lists
• How to declare a shipment
• How to generate invoices from packing lists
When you validate a Sale Order, as seen in the previous tutorial "How to create
Sale Orders", ERP5 creates automatically the related “Sale Packing List” .
Thanks to it, you will be able to track the shipment of the goods related to
the order.
The goal of this tutorial is to explain how to manage Sale Packing Lists, in
order to have the goods shipped and delivered.
This is a two steps procedure: first, the order needs to be shipped and, when
it reached the client warehouse, the status must be turned into “Delivered” .
Invoke simulation alarms
Managing a Packing List
Delivery Flow
As you can see on the drawing, the different steps of managing a Packing List
can be linked with real people in the company.
The principle of workflow based application makes sense in this case. Indeed,
once the Sale Order has been registered and confirmed by the sales manager, the
employee from the warehouse will prepare the automatically generated Sale
Packing List related to the order. Thanks to the workflow, the sales manager
will be aware that the order is ready to be sent and will give the order to
“Ship” the goods. Once the client receives the goods, checks them and gives
feedback, the sales manager will then change the status to “Delivered”.
In this way, it is possible to track the whole shipment process, thanks to
ERP5.
openAndWait ${base_url}
Sale Packing List
Packing List View Tab
From the previous tutorial "How to create Sale Orders", you have learned to
generate the related Sale Packing List automatically by confirming the Sale
Order, and reach the Sale Packing List by using the "Related Sale Packing List"
on the sidebar.
Now that you are on the initial view form of the Packing List related to your
Sale Order, you can start filling out the the missing information where it is
not filled automatically.
Note: Most data in the View tab and the other tabs (Details, Payment, Profile)
should have been updated automatically from the Sale Order , so you will not
have much to do now. If some fields have not been updated, it means that those
fields have not been filled out correctly in the related Sale Order. This is
why we recommend to fill out properly the Sale Orders before generating Packing
Lists.
waitForElementPresent //a[contains(text(),
"ZUITE-TEST-SALEORDER-PRODUCT-001")]
click //a[contains(text(),
"ZUITE-TEST-SALEORDER-PRODUCT-001")]
click //input[@name="editable"]
waitForElementPresent //div[@data-gadget-scope="field_my_comment"]
//textarea
type //div[@data-gadget-scope="field_my_comment"] Delivery by the test.
//textarea
verifyValue //input[@name="field_my_title"] ZUITE-TEST-SALEORDER-PRODUCT-001
verifyValue //input[@name= ZUITE-TEST-SALEORDER-ORGANISATION-001
"field_my_source_section_title"]
verifyValue //input[@name="field_my_source_title"] ZUITE-TEST-SALEORDER-ORGANISATION-001
verifyValue //input[@name= ZUITE-TEST-SALEORDER-ORGANISATION-001
"field_my_source_administration_title"]
verifyValue //input[@name= ZUITE-TEST-SALEORDER-ORGANISATION-002
"field_my_destination_section_title"]
verifyValue //input[@name= ZUITE-TEST-SALEORDER-ORGANISATION-002
"field_my_destination_section_title"]
verifyValue //input[@name= ZUITE-TEST-SALEORDER USER-001
"field_my_destination_administration_title"]
verifyValue //input[@name="field_my_specialise_title"] General Sale Trade Condition
waitForElementPresent //a[contains(text(),
"ZUITE-TEST-SALEORDER-PRODUCT-001")]
waitForElementPresent //p[contains(text(), "100 000.00")]
Ship
Selecting Ship on Action Menu
After the sales manager confirms the Sale Order, the employees in warehouse
will prepare the shipment and ship it. If the shipment corresponds with the
information in the Sale Packing List, you have to tell ERP5 that your order has
been shipped.
To do so, click on “Ship Packing List”on the sidebar .
This will change the status of the Sale Packing List from "Confirmed" to
"Shipped" , as you can see on the next page's screenshot.
The next step will be to set the packing list as delivered after the clients
acknowledges the shipment.
storeLocation packing_list
Wait for activities
open ${packing_list}
waitForElementPresent //p[@id=
"field_my_translated_simulation_state_title"]
verifyText //p[@id= Shipped
"field_my_translated_simulation_state_title"]
Deliver
Selecting Delivery on Action Menu
When the shipment has been received by the customer, if the goods have been
checked and are in good condition, you would like to set the packing list as
delivered.
To do so, please click on the“Deliver Packing List”on the sidebar .
This will change the status of the Sale Packing List from "Shipped" to
“Delivered” , and this also will generate the related invoice , as you can see
on the following two pages.
waitForElementPresent //p[@id=
"field_my_translated_simulation_state_title"]
verifyText //p[@id= Delivered
"field_my_translated_simulation_state_title"]
storeLocation spl
Jump to "Related Sale Invoice Transaction"
Jump to "Related Sale Transaction Invoice"
After the Packing List is in "Delivered" state, you can access to related
invoice by clicking the "Related Sale Invoice Transaction" on the sidebar .
Generated Sale Invoice Transaction
Generated Sale Transaction Invoice
Now you can have a look at the Sale Invoice Transaction generated from the Sale
Packing List. If you need to go back to the initial Sale Order or Sale Packing
List, you can either use the "Jumps" list on the sidebar again, or by browsing
the Sale Orders or Sale Packing Lists in the "Modules" list.
In next tutorial, you will learn how to manage invoices.
Diverged Packing List
Diverged Packing List
Sale Packing Lists can generate an invoice for the related transaction by a
simply action: Ship Packing List , if the number of items shipped (in the Sale
Packing List) matches the number of items ordered (in the Sale Order). This
means that you do not have to bother clicking on anything, the invoice will be
automatically generated after you ship the Packing List.
The same as the "Related Sale Packing List", you can reach the "Related Sale
Invoice Transaction" by clicking it on the sidebar .
However, ERP5 also allows you to manage the difference that can exist between
what has been ordered and what has been exactly shipped.
For example, your client ordered 1000 products from you, but after the sales
manager registered the Sale Order and confirmed it, the warehouse agent
discovers that there is only 900 products left, due to a strike that obstructed
your shipment to be delivered on time.
The warehouse agent, who is in charge of preparing the shipment, verifying the
Sale Packing List on ERP5 and shipping the goods, decides to pack the 900
products available, and changed the quantity in the Sale Packing List.
Technically speaking, this means that the order and the shipment are not
convergent, because 1000 products have been ordered and only 900 have been
shipped. For this reason, the invoice generation will be up to the sales
manager. If he/she approves the shipment, he/she can first "Split and Defer"
the initial Sale Packing List , which will create another Sale Packing List for
this order with the quantity left to be shipped later. The warehouse can then
"Ship" and finally "Deliver" the first Packing List . After the second part of
the products are prepared, the warehouse can "Ship" and "Deliver" the second
Packing List . In this way, the diverged Packing List can be solved.
Note that once you Ship Packing List, the action generates invoice for the
related Packing List automatically, with the updated quantity shipped . So
finally, you will have two sale invoices, corresponding to each diverged Sale
Packing List.
Invoke simulation alarms
open ${spl}
tal:block>
Login As Manager
open ${base_url}/Zuite_tearDownSaleOrderTest
verifyTextPresent Clean Ok
Wait for activities