Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Carlos Ramos Carreño
erp5
Commits
d4dce69d
Commit
d4dce69d
authored
Dec 13, 2018
by
Xiaowu Zhang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
testInventory: update test
remove useless test_21 update test_20 with various packing list
parent
cc8672de
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
443 additions
and
395 deletions
+443
-395
product/ERP5/tests/testInventory.py
product/ERP5/tests/testInventory.py
+443
-395
No files found.
product/ERP5/tests/testInventory.py
View file @
d4dce69d
...
...
@@ -76,7 +76,7 @@ class TestInventory(TestOrderMixin, ERP5TypeTestCase):
"""
return
(
'erp5_base'
,
'erp5_pdm'
,
'erp5_simulation'
,
'erp5_trade'
,
'erp5_configurator_standard_trade_template'
,
'erp5_apparel'
,
'erp5_simulation_test'
)
'erp5_apparel'
,
'erp5_simulation_test'
,
'erp5_mrp'
)
def
setUpPreferences
(
self
):
#create apparel variation preferences
...
...
@@ -1231,21 +1231,6 @@ class TestInventory(TestOrderMixin, ERP5TypeTestCase):
LOG
(
'SQL Query was : '
,
0
,
str
(
simulation
.
getInventory
(
src__
=
1
,
**
kw
)))
self
.
assertEqual
(
e_inventory
,
a_inventory
,
msg
)
def
_testGetInventoryAssetPrice
(
self
,
expected
,
**
kw
):
"""
Shared testing method
"""
simulation
=
self
.
getPortal
().
portal_simulation
e_inventory
=
expected
LOG
(
'Testing inventory with args :'
,
0
,
kw
)
a_inventory
=
simulation
.
getInventoryAssetPrice
(
**
kw
)
if
e_inventory
!=
a_inventory
:
msg
=
'Inventory differs between expected (%s) and real (%s) price'
\
%
(
repr
(
e_inventory
),
repr
(
a_inventory
))
LOG
(
'TestInventory._testGetInventoryAssetPrice'
,
0
,
msg
)
LOG
(
'SQL Query was : '
,
0
,
str
(
simulation
.
getInventoryAssetPrice
(
src__
=
1
,
**
kw
)))
self
.
assertEqual
(
e_inventory
,
a_inventory
,
msg
)
def
stepTestGetInventoryOnSimulationState
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
...
...
@@ -3550,8 +3535,8 @@ class TestInventory(TestOrderMixin, ERP5TypeTestCase):
packing_list
=
packing_list_module
.
newContent
(
portal_type
=
packing_list_portal_type
)
if
kw
.
get
(
'
star
t_date'
,
None
)
is
not
None
:
start_date
=
stop_date
=
kw
[
'
star
t_date'
]
if
kw
.
get
(
'
a
t_date'
,
None
)
is
not
None
:
start_date
=
stop_date
=
kw
[
'
a
t_date'
]
else
:
start_date
=
stop_date
=
DateTime
()
-
2
packing_list
.
edit
(
...
...
@@ -3573,7 +3558,6 @@ class TestInventory(TestOrderMixin, ERP5TypeTestCase):
price
=
price
)
sequence
.
edit
(
packing_list
=
packing_list
)
return
packing_list_line
def
stepCreateSalePackingListToSectionNodeForFirstResource
(
self
,
sequence
=
None
,
...
...
@@ -3707,453 +3691,517 @@ class TestInventory(TestOrderMixin, ERP5TypeTestCase):
sequence_list
.
addSequenceString
(
sequence_string
)
sequence_list
.
play
(
self
)
def
stepCreateIPLForModule
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
node
=
sequence
.
get
(
'node'
)
section
=
sequence
.
get
(
'section'
)
other_node
=
sequence
.
get
(
'other_node'
)
def
stepInitialAWarehouseX
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
#sale packing list
at_date
=
DateTime
(
'2013/02/10 00:00:00 GMT+9'
)
resource
=
sequence
.
get
(
'resource'
)
packing_list_module
=
self
.
getPortal
().
getDefaultModule
(
portal_type
=
'Internal Packing List'
)
packing_list
=
packing_list_module
.
newContent
(
portal_type
=
'Internal Packing List'
)
start_date
=
stop_date
=
self
.
start_date_1
#same owner but different warehouse
packing_list
.
edit
(
specialise
=
self
.
business_process
,
source_section_value
=
section
,
source_value
=
node
,
destination_section_value
=
section
,
destination_value
=
other_node
,
start_date
=
start_date
,
stop_date
=
stop_date
,
price_currency
=
self
.
price_currency
)
sequence
.
edit
(
packing_list
=
packing_list
)
def
stepCreatePackingListLineWithQuantity3
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
packing_list
=
sequence
.
get
(
'packing_list'
)
resource_value
=
sequence
.
get
(
'resource'
)
packing_list_line
=
packing_list
.
newContent
(
portal_type
=
'Internal Packing List Line'
)
packing_list_line
.
edit
(
resource_value
=
resource_value
,
quantity
=
3.
)
A
=
sequence
.
get
(
'section'
)
X
=
sequence
.
get
(
'node'
)
mirror_section
=
sequence
.
get
(
'mirror_section'
)
mirror_node
=
sequence
.
get
(
'mirror_node'
)
def
stepCreatePackingListLineWithQuantity_3
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
packing_list
=
sequence
.
get
(
'packing_list'
)
resource_value
=
sequence
.
get
(
'resource'
)
packing_list_line
=
packing_list
.
newContent
(
portal_type
=
'Internal Packing List Line'
)
packing_list_line
.
edit
(
resource_value
=
resource_value
,
quantity
=
-
3.
)
self
.
stepCreatePackingList
(
sequence
=
sequence
,
sequence_list
=
sequence_list
,
section
=
A
,
node
=
X
,
mirror_section
=
mirror_section
,
mirror_node
=
mirror_node
,
resource
=
resource
,
quantity
=
100
,
at_date
=
at_date
,
packing_list
=
'Sale Packing List'
)
def
stepCreatePackingListLineWithQuantity30
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
packing_list
=
sequence
.
get
(
'packing_list'
)
resource_value
=
sequence
.
get
(
'resource'
)
packing_list_line
=
packing_list
.
newContent
(
portal_type
=
'Internal Packing List Line'
)
packing_list_line
.
edit
(
resource_value
=
resource_value
,
quantity
=
30.
)
def
stepCreateIPLFromAWarehouseXToAWarehouseYWithQuantity3
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
A
=
sequence
.
get
(
'section'
)
X
=
sequence
.
get
(
'node'
)
Y
=
sequence
.
get
(
'other_node'
)
resource
=
sequence
.
get
(
'resource'
)
at_date
=
DateTime
(
'2013/02/11 00:00:00 GMT+9'
)
def
stepCreatePackingListLineWithQuantity_30
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
packing_list
=
sequence
.
get
(
'packing_list'
)
resource_value
=
sequence
.
get
(
'resource'
)
packing_list_line
=
packing_list
.
newContent
(
portal_type
=
'Internal Packing List Line'
)
packing_list_line
.
edit
(
resource_value
=
resource_value
,
quantity
=
-
30.
)
self
.
stepCreatePackingList
(
sequence
=
sequence
,
sequence_list
=
sequence_list
,
section
=
A
,
node
=
Y
,
mirror_section
=
A
,
mirror_node
=
X
,
resource
=
resource
,
quantity
=
3
,
at_date
=
at_date
,
packing_list
=
'Internal Packing List'
)
def
stepCancelIPLFromAWarehouseXToAWarehouseYWithQuantity3
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
A
=
sequence
.
get
(
'section'
)
X
=
sequence
.
get
(
'node'
)
Y
=
sequence
.
get
(
'other_node'
)
resource
=
sequence
.
get
(
'resource'
)
at_date
=
DateTime
(
'2013/02/11 02:00:00 GMT+9'
)
def
stepCreatePackingListLineWithQuantity33
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
packing_list
=
sequence
.
get
(
'packing_list'
)
resource_value
=
sequence
.
get
(
'resource'
)
packing_list_line
=
packing_list
.
newContent
(
portal_type
=
'Internal Packing List Line'
)
packing_list_line
.
edit
(
resource_value
=
resource_value
,
quantity
=
33.
)
def
stepTestMultiCancelInventory
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
resource_value
=
sequence
.
get
(
'resource'
)
node_value
=
sequence
.
get
(
'node'
)
other_node_value
=
sequence
.
get
(
'other_node'
)
section_value
=
sequence
.
get
(
'section'
)
at_date
=
self
.
start_date_1
self
.
_testGetInventory
(
expected
=
67
,
section_uid
=
section_value
.
getUid
(),
node_uid
=
node_value
.
getUid
(),
resource_uid
=
resource_value
.
getUid
(),
at_date
=
at_date
)
self
.
_testGetInventory
(
expected
=
33
,
section_uid
=
section_value
.
getUid
(),
node_uid
=
other_node_value
.
getUid
(),
resource_uid
=
resource_value
.
getUid
(),
at_date
=
at_date
)
self
.
stepCreatePackingList
(
sequence
=
sequence
,
sequence_list
=
sequence_list
,
section
=
A
,
node
=
X
,
mirror_section
=
A
,
mirror_node
=
Y
,
resource
=
resource
,
quantity
=
3
,
at_date
=
at_date
,
packing_list
=
'Internal Packing List'
)
def
stepCreateIPLFromAWarehouseXToAWarehouseYWithQuantity30
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
A
=
sequence
.
get
(
'section'
)
X
=
sequence
.
get
(
'node'
)
Y
=
sequence
.
get
(
'other_node'
)
resource
=
sequence
.
get
(
'resource'
)
at_date
=
DateTime
(
'2013/02/13 04:00:00 GMT+9'
)
def
test_20_InventoryWhenCancelInternalPackingList
(
self
,
quite
=
0
,
run
=
run_all_test
):
"""
When Company A's 33 of product G was shipped from warehouse X
to warehouse Y (ownership is still same, just location change)
in real world, an ERP5 user made many mistakes to enter the above
single fact and in the end he created five IPL(Internal Packing List)
to record the single fact.
IPL1 (quantity is wrong)
start_date 2013/Feb/10
source_section A destination_section A
source X destination Y
resource G quantity 3
simulation_state
IPL2 (Cancellation of IPL1)
start_date 2013/Feb/10
source_section A destination_section A
source X destination Y
resource G quantity -3
simulation_state delivered
IPL3 (He made a mistake again!)
start_date 2013/Feb/10
source_section A destination_section A
source X destination Y
resource H quantity 30
simulation_state delivered
IPL4 (Cancellation of IPL3)
start_date 2013/Feb/10
source_section A destination_section A
source X destination Y
resource H quantity -30
simulation_state delivered
IPL5 (Finally he was able to enter data correctly!)
start_date 2013/Feb/10
source_section A destination_section A
source X destination Y
resource G quantity 33
simulation_state delivered
"""
if
not
run
:
return
self
.
start_date_1
=
'2013/02/10 00:00:00 GMT+9'
sequence_list
=
SequenceList
()
sequence_string
=
'CreateOrganisationsForModule
\
CreateNotVariatedResource
\
Tic
\
CreatePackingListAtTheDate1
\
CreatePackingListLine
\
Tic
\
DeliverPackingList
\
Tic
\
CreateIPLForModule
\
CreatePackingListLineWithQuantity3
\
Tic
\
DeliverPackingList
\
Tic
\
CreateIPLForModule
\
CreatePackingListLineWithQuantity_3
\
Tic
\
DeliverPackingList
\
Tic
\
CreateIPLForModule
\
CreatePackingListLineWithQuantity30
\
Tic
\
DeliverPackingList
\
Tic
\
CreateIPLForModule
\
CreatePackingListLineWithQuantity_30
\
Tic
\
DeliverPackingList
\
Tic
\
CreateIPLForModule
\
CreatePackingListLineWithQuantity33
\
Tic
\
DeliverPackingList
\
Tic
\
TestMultiCancelInventory
\
'
sequence_list
.
addSequenceString
(
sequence_string
)
sequence_list
.
play
(
self
)
self
.
stepCreatePackingList
(
sequence
=
sequence
,
sequence_list
=
sequence_list
,
section
=
A
,
node
=
Y
,
mirror_section
=
A
,
mirror_node
=
X
,
resource
=
resource
,
quantity
=
30
,
at_date
=
at_date
,
packing_list
=
'Internal Packing List'
)
def
stepCancelIPLFromAWarehouseXToAWarehouseYWithQuantity30
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
A
=
sequence
.
get
(
'section'
)
X
=
sequence
.
get
(
'node'
)
Y
=
sequence
.
get
(
'other_node'
)
resource
=
sequence
.
get
(
'resource'
)
at_date
=
DateTime
(
'2013/02/14 05:00:00 GMT+9'
)
def
stepCreateOneMoreSection
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
self
.
stepCreateOrganisation
(
sequence
=
sequence
,
sequence_list
=
sequence_list
,
**
kw
)
one_more_section
=
sequence
.
get
(
'organisation'
)
sequence
.
edit
(
one_more_section
=
one_more_section
)
self
.
stepCreatePackingList
(
sequence
=
sequence
,
sequence_list
=
sequence_list
,
section
=
A
,
node
=
X
,
mirror_section
=
A
,
mirror_node
=
Y
,
resource
=
resource
,
quantity
=
30
,
at_date
=
at_date
,
packing_list
=
'Internal Packing List'
)
def
stepCreateS
alePackingListToA
(
self
,
sequence
=
None
,
def
stepCreateS
PLFromAWarehouseXToBWarehouseYWithQuantity30
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
#A
section
=
sequence
.
get
(
'section'
)
node
=
sequence
.
get
(
'node'
)
A
=
sequence
.
get
(
'section'
)
X
=
sequence
.
get
(
'node'
)
B
=
sequence
.
get
(
'other_section'
)
Y
=
sequence
.
get
(
'other_node'
)
resource
=
sequence
.
get
(
'resource'
)
at_date
=
DateTime
(
'2013/02/14 04:00:00 GMT+9'
)
self
.
stepCreatePackingList
(
sequence
=
sequence
,
sequence_list
=
sequence_list
,
section
=
section
,
node
=
node
,
section
=
B
,
node
=
Y
,
mirror_section
=
A
,
mirror_node
=
X
,
resource
=
resource
,
quantity
=
1
0
,
price
=
100
,
quantity
=
3
0
,
at_date
=
at_date
,
packing_list
=
'Sale Packing List'
)
def
stepCreateP
urchasePackingListForASecond
(
self
,
sequence
=
None
,
def
stepCreateP
PLForCWarehouseXFromAWarehouseXWithQuantity10
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
#A
section
=
sequence
.
get
(
'section'
)
node
=
sequence
.
get
(
'node'
)
resource
=
sequence
.
get
(
'resource'
)
C
=
sequence
.
get
(
'one_more_section'
)
X
=
sequence
.
get
(
'node'
)
A
=
sequence
.
get
(
'section'
)
X
=
sequence
.
get
(
'node'
)
at_date
=
DateTime
(
'2013/02/11 04:00:00 GMT+9'
)
self
.
stepCreatePackingList
(
sequence
=
sequence
,
sequence_list
=
sequence_list
,
section
=
section
,
node
=
node
,
section
=
C
,
node
=
X
,
mirror_section
=
A
,
mirror_node
=
X
,
resource
=
resource
,
quantity
=
15
,
price
=
200
,
quantity
=
10
,
at_date
=
at_date
,
packing_list
=
'Purchase Packing List'
)
def
stepC
reatePurchasePackingListForAThird
(
self
,
sequence
=
None
,
def
stepC
ancelSPLFromAWarehouseXToBWarehouseYWithQuantity30
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
#A
section
=
sequence
.
get
(
'section'
)
node
=
sequence
.
get
(
'node'
)
A
=
sequence
.
get
(
'section'
)
X
=
sequence
.
get
(
'node'
)
B
=
sequence
.
get
(
'other_section'
)
Y
=
sequence
.
get
(
'other_node'
)
resource
=
sequence
.
get
(
'resource'
)
at_date
=
DateTime
(
'2013/02/14 06:00:00 GMT+9'
)
self
.
stepCreatePackingList
(
sequence
=
sequence
,
sequence_list
=
sequence_list
,
section
=
section
,
node
=
node
,
section
=
A
,
node
=
X
,
mirror_section
=
B
,
mirror_node
=
Y
,
resource
=
resource
,
quantity
=
2
0
,
price
=
200
,
packing_list
=
'Purchas
e Packing List'
)
quantity
=
3
0
,
at_date
=
at_date
,
packing_list
=
'Sal
e Packing List'
)
def
stepCreatePurchasePackingListForB
(
self
,
sequence
=
None
,
def
stepCreateProductionPFromAFactoryZToAWarehouseXWithQuantity10
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
#B
section
=
sequence
.
get
(
'other_section
'
)
node
=
sequence
.
get
(
'other_
node'
)
A
=
sequence
.
get
(
'section'
)
Z
=
sequence
.
get
(
'factory
'
)
X
=
sequence
.
get
(
'
node'
)
resource
=
sequence
.
get
(
'resource'
)
at_date
=
DateTime
(
'2013/02/14 08:00:00 GMT+9'
)
self
.
stepCreatePackingList
(
sequence
=
sequence
,
sequence_list
=
sequence_list
,
section
=
section
,
node
=
node
,
section
=
A
,
node
=
X
,
mirror_section
=
A
,
mirror_node
=
Z
,
resource
=
resource
,
quantity
=
20
,
price
=
55
,
packing_list
=
'Purchase Packing List'
)
quantity
=
10
,
at_date
=
at_date
,
packing_list
=
'Production Packing List'
)
def
stepCreateS
alePackingListFromAToB
(
self
,
sequence
=
None
,
def
stepCreateS
PLFromAWarehouseXToBWarehouseYWithQuantity24
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
#B
section
=
sequence
.
get
(
'other_section'
)
node
=
sequence
.
get
(
'other_node'
)
A
=
sequence
.
get
(
'section'
)
X
=
sequence
.
get
(
'node'
)
B
=
sequence
.
get
(
'other_section'
)
Y
=
sequence
.
get
(
'other_node'
)
resource
=
sequence
.
get
(
'resource'
)
#A
mirror_section
=
sequence
.
get
(
'section'
)
mirror_node
=
sequence
.
get
(
'node'
)
packing_list_line_a_to_b
=
self
.
stepCreatePackingList
(
sequence
=
sequence
,
at_date
=
DateTime
(
'2013/02/16 00:00:00 GMT+9'
)
self
.
stepCreatePackingList
(
sequence
=
sequence
,
sequence_list
=
sequence_list
,
section
=
section
,
node
=
node
,
mirror_section
=
mirror_section
,
mirror_node
=
mirror_node
,
section
=
B
,
node
=
Y
,
mirror_section
=
A
,
mirror_node
=
X
,
resource
=
resource
,
quantity
=
30
,
quantity
=
24
,
at_date
=
at_date
,
packing_list
=
'Sale Packing List'
)
sequence
.
edit
(
packing_list_line_a_to_b
=
packing_list_line_a_to_b
)
def
stepCreateP
urchasePackingListForCFromA
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
#C
section
=
sequence
.
get
(
'one_more
_section'
)
node
=
sequence
.
get
(
'
node'
)
def
stepCreateP
PLForCWarehouseXFromBWarehouseYWithQuantity5
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
C
=
sequence
.
get
(
'one_more_section'
)
X
=
sequence
.
get
(
'node'
)
B
=
sequence
.
get
(
'other
_section'
)
Y
=
sequence
.
get
(
'other_
node'
)
resource
=
sequence
.
get
(
'resource'
)
#A
mirror_section
=
sequence
.
get
(
'section'
)
mirror_node
=
sequence
.
get
(
'node'
)
packing_list_line_a_to_c
=
self
.
stepCreatePackingList
(
sequence
=
sequence
,
at_date
=
DateTime
(
'2013/02/24 00:00:00 GMT+9'
)
self
.
stepCreatePackingList
(
sequence
=
sequence
,
sequence_list
=
sequence_list
,
section
=
section
,
node
=
node
,
mirror_section
=
mirror_section
,
mirror_node
=
mirror_node
,
section
=
C
,
node
=
X
,
mirror_section
=
B
,
mirror_node
=
Y
,
resource
=
resource
,
quantity
=
10
,
quantity
=
5
,
at_date
=
at_date
,
packing_list
=
'Purchase Packing List'
)
sequence
.
edit
(
packing_list_line_a_to_c
=
packing_list_line_a_to_c
)
def
stepCreatePurchasePackingListForCFromB
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
#C
section
=
sequence
.
get
(
'one_more_section'
)
node
=
sequence
.
get
(
'node'
)
def
stepCreateIPLFromAWarehouseXToAWarehouseYWithQuantity33
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
A
=
sequence
.
get
(
'section'
)
X
=
sequence
.
get
(
'node'
)
Y
=
sequence
.
get
(
'other_node'
)
resource
=
sequence
.
get
(
'resource'
)
#B
mirror_section
=
sequence
.
get
(
'other_section'
)
mirror_node
=
sequence
.
get
(
'other_node'
)
packing_list_line_b_to_c
=
self
.
stepCreatePackingList
(
sequence
=
sequence
,
at_date
=
DateTime
(
'2013/02/25 01:00:00 GMT+9'
)
self
.
stepCreatePackingList
(
sequence
=
sequence
,
sequence_list
=
sequence_list
,
section
=
section
,
node
=
node
,
mirror_section
=
mirror_section
,
mirror_node
=
mirror_node
,
section
=
A
,
node
=
Y
,
mirror_section
=
A
,
mirror_node
=
X
,
resource
=
resource
,
at_date
=
at_date
,
quantity
=
33
,
packing_list
=
'Internal Packing List'
)
def
stepCancelPPLForCWarehouseXFromBWarehouseYWithQuantity5
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
C
=
sequence
.
get
(
'one_more_section'
)
X
=
sequence
.
get
(
'node'
)
B
=
sequence
.
get
(
'other_section'
)
Y
=
sequence
.
get
(
'other_node'
)
resource
=
sequence
.
get
(
'resource'
)
at_date
=
DateTime
(
'2013/02/25 02:00:00 GMT+9'
)
self
.
stepCreatePackingList
(
sequence
=
sequence
,
sequence_list
=
sequence_list
,
section
=
B
,
node
=
Y
,
mirror_section
=
C
,
mirror_node
=
X
,
resource
=
resource
,
quantity
=
5
,
packing_list
=
'Purchase Packing List'
)
sequence
.
edit
(
packing_list_line_b_to_c
=
packing_list_line_b_to_c
)
at_date
=
at_date
,
packing_list
=
'Purchase Packing List'
)
def
stepCreate
SalePackingListFromCToA
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
#A
section
=
sequence
.
get
(
'
section'
)
node
=
sequence
.
get
(
'
node'
)
def
stepCreate
PPLForCWarehouseXFromBWarehouseYWithQuantity10
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
C
=
sequence
.
get
(
'one_more_section'
)
X
=
sequence
.
get
(
'node'
)
B
=
sequence
.
get
(
'other_
section'
)
Y
=
sequence
.
get
(
'other_
node'
)
resource
=
sequence
.
get
(
'resource'
)
#C
mirror_section
=
sequence
.
get
(
'one_more_section'
)
mirror_node
=
sequence
.
get
(
'node'
)
packing_list_line_c_to_a
=
self
.
stepCreatePackingList
(
sequence
=
sequence
,
at_date
=
DateTime
(
'2013/02/26 00:00:00 GMT+9'
)
self
.
stepCreatePackingList
(
sequence
=
sequence
,
sequence_list
=
sequence_list
,
section
=
section
,
node
=
node
,
mirror_section
=
mirror_section
,
mirror_node
=
mirror_node
,
section
=
C
,
node
=
X
,
mirror_section
=
B
,
mirror_node
=
Y
,
resource
=
resource
,
quantity
=
2
,
packing_list
=
'Sale Packing List'
)
sequence
.
edit
(
packing_list_line_c_to_a
=
packing_list_line_c_to_a
)
quantity
=
10
,
at_date
=
at_date
,
packing_list
=
'Purchase Packing List'
)
def
stepCreateOneMoreSection
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
self
.
stepCreateOrganisation
(
sequence
=
sequence
,
sequence_list
=
sequence_list
,
**
kw
)
one_more_section
=
sequence
.
get
(
'organisation'
)
sequence
.
edit
(
one_more_section
=
one_more_section
)
def
stepCreateFactory
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
self
.
stepCreateOrganisation
(
sequence
=
sequence
,
sequence_list
=
sequence_list
,
**
kw
)
factory
=
sequence
.
get
(
'organisation'
)
sequence
.
edit
(
factory
=
factory
)
def
stepDeliverProductionPackingList
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
# Switch to "started" state
packing_list
=
sequence
.
get
(
'packing_list'
)
workflow_tool
=
self
.
getPortal
().
portal_workflow
workflow_tool
.
doActionFor
(
packing_list
,
"confirm_action"
,
"production_packing_list_workflow"
)
self
.
commit
()
# Apply tic so that the packing list is not in building state
self
.
tic
()
# acceptable here because this is not the job
# of the test to check if can do all transition
# without processing messages
workflow_tool
.
doActionFor
(
packing_list
,
"set_ready_action"
,
"production_packing_list_workflow"
)
self
.
tic
()
workflow_tool
.
doActionFor
(
packing_list
,
"start_action"
,
"production_packing_list_workflow"
)
workflow_tool
.
doActionFor
(
packing_list
,
"stop_action"
,
"production_packing_list_workflow"
)
workflow_tool
.
doActionFor
(
packing_list
,
"deliver_action"
,
"production_packing_list_workflow"
)
def
step
testCircularMovementQuantit
y
(
self
,
sequence
=
None
,
def
step
TestMultiCancelInventor
y
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
resource_value
=
sequence
.
get
(
'resource'
)
node_value
=
sequence
.
get
(
'node
'
)
other_node_value
=
sequence
.
get
(
'other_node
'
)
section_value
=
sequence
.
get
(
'
section'
)
other_section_value
=
sequence
.
get
(
'other_section
'
)
one_more_section_value
=
sequence
.
get
(
'one_more_section
'
)
#C
A
=
sequence
.
get
(
'section
'
)
B
=
sequence
.
get
(
'other_section
'
)
C
=
sequence
.
get
(
'one_more_
section'
)
X
=
sequence
.
get
(
'node
'
)
Y
=
sequence
.
get
(
'other_node
'
)
self
.
_testGetInventory
(
expected
=
13
,
section_uid
=
one_more_section_value
.
getUid
(),
node_uid
=
node_value
.
getUid
(),
resource_uid
=
resource_value
.
getUid
()
)
#B
expected
=
33
,
section_uid
=
A
.
getUid
(),
node_uid
=
Y
.
getUid
(),
resource_uid
=
resource_value
.
getUid
())
self
.
_testGetInventory
(
expected
=
45
,
section_uid
=
other_section_value
.
getUid
(),
node_uid
=
other_node_value
.
getUid
(),
resource_uid
=
resource_value
.
getUid
()
)
#A
expected
=
43
,
section_uid
=
A
.
getUid
(),
node_uid
=
X
.
getUid
(),
resource_uid
=
resource_value
.
getUid
())
self
.
_testGetInventory
(
expected
=
7
,
section_uid
=
section_value
.
getUid
(),
node_uid
=
node_value
.
getUid
(),
resource_uid
=
resource_value
.
getUid
()
)
expected
=
14
,
section_uid
=
B
.
getUid
(),
node_uid
=
Y
.
getUid
(),
resource_uid
=
resource_value
.
getUid
())
def
steptestCircularMovementPrice
(
self
,
sequence
=
None
,
sequence_list
=
None
,
**
kw
):
resource_value
=
sequence
.
get
(
'resource'
)
node_value
=
sequence
.
get
(
'node'
)
other_node_value
=
sequence
.
get
(
'other_node'
)
section_value
=
sequence
.
get
(
'section'
)
other_section_value
=
sequence
.
get
(
'other_section'
)
one_more_section_value
=
sequence
.
get
(
'one_more_section'
)
#C
self
.
_testGetInventoryAssetPrice
(
expected
=
160
,
section_uid
=
one_more_section_value
.
getUid
(),
node_uid
=
node_value
.
getUid
(),
resource_uid
=
resource_value
.
getUid
(),
valuation_method
=
'WeightedAverage'
)
#B
self
.
_testGetInventoryAssetPrice
(
expected
=
129
,
section_uid
=
other_section_value
.
getUid
(),
node_uid
=
other_node_value
.
getUid
(),
resource_uid
=
resource_value
.
getUid
(),
valuation_method
=
'WeightedAverage'
)
#A
self
.
_testGetInventoryAssetPrice
(
expected
=
178
,
section_uid
=
section_value
.
getUid
(),
node_uid
=
node_value
.
getUid
(),
resource_uid
=
resource_value
.
getUid
(),
valuation_method
=
'WeightedAverage'
)
self
.
_testGetInventory
(
expected
=
20
,
section_uid
=
C
.
getUid
(),
node_uid
=
X
.
getUid
(),
resource_uid
=
resource_value
.
getUid
())
at_date
=
DateTime
(
'2013/02/15 00:00:00 GMT+9'
)
self
.
_testGetInventory
(
expected
=
0
,
section_uid
=
A
.
getUid
(),
node_uid
=
Y
.
getUid
(),
at_date
=
at_date
,
resource_uid
=
resource_value
.
getUid
())
self
.
_testGetInventory
(
expected
=
100
,
section_uid
=
A
.
getUid
(),
node_uid
=
X
.
getUid
(),
at_date
=
at_date
,
resource_uid
=
resource_value
.
getUid
())
self
.
_testGetInventory
(
expected
=
0
,
section_uid
=
B
.
getUid
(),
node_uid
=
Y
.
getUid
(),
at_date
=
at_date
,
resource_uid
=
resource_value
.
getUid
())
self
.
_testGetInventory
(
expected
=
10
,
section_uid
=
C
.
getUid
(),
node_uid
=
X
.
getUid
(),
at_date
=
at_date
,
resource_uid
=
resource_value
.
getUid
())
at_date
=
DateTime
(
'2013/02/25 00:00:00 GMT+9'
)
self
.
_testGetInventory
(
expected
=
0
,
section_uid
=
A
.
getUid
(),
node_uid
=
Y
.
getUid
(),
at_date
=
at_date
,
resource_uid
=
resource_value
.
getUid
())
self
.
_testGetInventory
(
expected
=
76
,
section_uid
=
A
.
getUid
(),
node_uid
=
X
.
getUid
(),
at_date
=
at_date
,
resource_uid
=
resource_value
.
getUid
())
self
.
_testGetInventory
(
expected
=
19
,
section_uid
=
B
.
getUid
(),
node_uid
=
Y
.
getUid
(),
at_date
=
at_date
,
resource_uid
=
resource_value
.
getUid
())
def
test_21_CircularMovements
(
self
,
quite
=
0
,
run
=
run_all_test
):
self
.
_testGetInventory
(
expected
=
15
,
section_uid
=
C
.
getUid
(),
node_uid
=
X
.
getUid
(),
at_date
=
at_date
,
resource_uid
=
resource_value
.
getUid
())
def
test_20_InventoryWhenCancelPackingList
(
self
,
quite
=
0
,
run
=
run_all_test
):
"""
Owner A, warehouse X, product G, quantity 10, total price is 1000
Owner B, warehouse Y, product G, quantity 20, total price is 1100
Owner C, warehouse X, product G, quantity 0 , total price is 0
initial 2013/02/10 00:00:00 GMT+9:
A warehouse X, has product: Notvariated 100
2013/02/11 00:00:00 GMT+9
IPL 1: A warehouse X ----> A warehouse Y, quantity: 3
Then, product G was moved like below:
2013/02/11 02:00:00 GMT+9
cancel IPL1
Owner A purchased 15 of product G for the price of 3000
Owner A purchased 20 of product G for the price of 400
0
2013/02/13 04:00:00 GMT+9
IPL 2: A warehouse X ----> A warehouse Y, quantity: 3
0
Owner B purchased 30 of product G from Owner A(price is determined at the end of Nov).
Owner C purchased 10 of product G from Owner A(price is determined at the end of Nov).
Owner C get 5 of product G from Owner B(price is determined at the end of Nov).
Owner A get 2 of product G from Owner C(price is determined at the end of Nov).
2013/02/14 04:00:00 GMT+9
SPL 1: A warehouse X ----> B warehouse Y, quantity: 30
2013/02/14 05:00:00 GMT+9
cancel IPL2
2013/02/11 04:00:00 GMT+9
PPL 1: A warehouse X ----> C warehouse X, quantity: 10
2013/02/14 06:00:00 GMT+9
cancel SPL1
2013/02/14 08:00:00 GMT+9
Production PL: A factory Z ---> A warehouse X, quantity: 10
2013/02/16 00:00:00 GMT+9
SPL 2: A warehouse X ----> B warehouse Y, quantity: 24
2013/02/24 00:00:00 GMT+9
PPL 2: B warehouse Y ----> C warehouse X, quantity: 5
2013/02/25 01:00:00 GMT+9
IPL 3: A warehouse X ----> A warehouse Y, quantity: 33
2013/02/25 02:00:00 GMT+9
cancel PPL 2
2013/02/26 00:00:00 GMT+9
PPL 3: B warehouse Y ----> C warehouse X, quantity: 10
As we see in this example, product G was moved between A and B, B and
C, C and A, it is circulating. Then, at the end of Mouth, Price of
product G of Owner A depends on price of product G of owner B, this
kind of thing happens. (And if it is a real circulation, price can't be
decided, it must not happen, but theoretically it can happen.
"""
if
not
run
:
return
sequence_list
=
SequenceList
()
sequence_string
=
'CreateOrganisationsForModule
\
CreateOneMoreSection
\
CreateFactory
\
CreateNotVariatedResource
\
Tic
\
CreateSalePackingListToA
\
InitialAWarehouseX
\
Tic
\
DeliverPackingList
\
Tic
\
Create
PurchasePackingListForB
\
Create
IPLFromAWarehouseXToAWarehouseYWithQuantity3
\
Tic
\
DeliverPackingList
\
Tic
\
CreatePurchasePackingListForASecond
\
CancelIPLFromAWarehouseXToAWarehouseYWithQuantity3
\
Tic
\
DeliverPackingList
\
Tic
\
CreatePurchasePackingListForAThird
\
CreateIPLFromAWarehouseXToAWarehouseYWithQuantity30
\
Tic
\
DeliverPackingList
\
Tic
\
CreateSalePackingListFromAToB
\
CreateSPLFromAWarehouseXToBWarehouseYWithQuantity30
\
Tic
\
DeliverPackingList
\
Tic
\
CreatePurchasePackingListForCFromA
\
CancelIPLFromAWarehouseXToAWarehouseYWithQuantity30
\
Tic
\
DeliverPackingList
\
Tic
\
CreatePurchasePackingListForCFromB
\
CreatePPLForCWarehouseXFromAWarehouseXWithQuantity10
\
Tic
\
DeliverPackingList
\
Tic
\
CancelSPLFromAWarehouseXToBWarehouseYWithQuantity30
\
Tic
\
DeliverPackingList
\
Tic
\
CreateSalePackingListFromCToA
\
CreateProductionPFromAFactoryZToAWarehouseXWithQuantity10
\
Tic
\
DeliverProductionPackingList
\
Tic
\
CreateSPLFromAWarehouseXToBWarehouseYWithQuantity24
\
Tic
\
DeliverPackingList
\
Tic
\
steptestCircularMovementQuantity
\
CreatePPLForCWarehouseXFromBWarehouseYWithQuantity5
\
Tic
\
DeliverPackingList
\
Tic
\
steptestCircularMovementPrice
\
CreateIPLFromAWarehouseXToAWarehouseYWithQuantity33
\
Tic
\
DeliverPackingList
\
Tic
\
CancelPPLForCWarehouseXFromBWarehouseYWithQuantity5
\
Tic
\
DeliverPackingList
\
Tic
\
CreatePPLForCWarehouseXFromBWarehouseYWithQuantity10
\
Tic
\
DeliverPackingList
\
Tic
\
TestMultiCancelInventory
\
'
sequence_list
.
addSequenceString
(
sequence_string
)
sequence_list
.
play
(
self
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
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 comment