Commit 2988be8c authored by Łukasz Nowak's avatar Łukasz Nowak

Update invoice builder to update existing invoices.

parent e8337e13
...@@ -130,9 +130,7 @@ ...@@ -130,9 +130,7 @@
</item> </item>
<item> <item>
<key> <string>delivery_select_method_id</string> </key> <key> <string>delivery_select_method_id</string> </key>
<value> <value> <string>DeliveryBuilder_selectSlapOSConfirmedInvoiceList</string> </value>
<none/>
</value>
</item> </item>
<item> <item>
<key> <string>description</string> </key> <key> <string>description</string> </key>
......
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>Script_magic</string> </key>
<value> <int>3</int> </value>
</item>
<item>
<key> <string>_bind_names</string> </key>
<value>
<object>
<klass>
<global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
</klass>
<tuple/>
<state>
<dictionary>
<item>
<key> <string>_asgns</string> </key>
<value>
<dictionary>
<item>
<key> <string>name_container</string> </key>
<value> <string>container</string> </value>
</item>
<item>
<key> <string>name_context</string> </key>
<value> <string>context</string> </value>
</item>
<item>
<key> <string>name_m_self</string> </key>
<value> <string>script</string> </value>
</item>
<item>
<key> <string>name_subpath</string> </key>
<value> <string>traverse_subpath</string> </value>
</item>
</dictionary>
</value>
</item>
</dictionary>
</state>
</object>
</value>
</item>
<item>
<key> <string>_body</string> </key>
<value> <string>portal_type = context.getDeliveryPortalType()\n
simulation_state = \'confirmed\'\n
\n
# use catalog to prefetch, but check later in ZODB\n
return [x.getObject() for x in context.getPortalObject().portal_catalog(\n
portal_type=portal_type,\n
# BEWARE: it works only in case of per-tree building\n
default_destination_section_uid=movement_list[0].getDestinationSectionUid(),\n
simulation_state=simulation_state) if x.getSimulationState() == simulation_state]\n
</string> </value>
</item>
<item>
<key> <string>_params</string> </key>
<value> <string>movement_list, **kw</string> </value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>DeliveryBuilder_selectSlapOSConfirmedInvoiceList</string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
...@@ -59,11 +59,15 @@ if related_simulation_movement_path_list is None:\n ...@@ -59,11 +59,15 @@ if related_simulation_movement_path_list is None:\n
raise RuntimeError, \'related_simulation_movement_path_list is missing. Update ERP5 Product.\'\n raise RuntimeError, \'related_simulation_movement_path_list is missing. Update ERP5 Product.\'\n
\n \n
invoice = context\n invoice = context\n
invoice.setResource(invoice.getPriceCurrency())\n price_currency = invoice.getPriceCurrency()\n
if invoice.getResource() != price_currency:\n
invoice.setResource(price_currency)\n
comment = translateString(\'Initialised by Delivery Builder.\')\n comment = translateString(\'Initialised by Delivery Builder.\')\n
invoice.plan(comment=comment)\n if invoice.portal_workflow.isTransitionPossible(invoice, \'plan\'):\n
invoice.confirm(comment=comment)\n invoice.plan(comment=comment)\n
invoice.startBuilding()\n if invoice.portal_workflow.isTransitionPossible(invoice, \'confirm\'):\n
invoice.confirm(comment=comment)\n
invoice.startBuilding(comment=comment)\n
</string> </value> </string> </value>
</item> </item>
<item> <item>
......
...@@ -46,7 +46,7 @@ class TestSlapOSSalePackingListBuilder(testSlapOSMixin): ...@@ -46,7 +46,7 @@ class TestSlapOSSalePackingListBuilder(testSlapOSMixin):
portal_type='Simulation Movement')) portal_type='Simulation Movement'))
def checkDelivery(self, simulation_movement, delivery, delivery_portal_type, def checkDelivery(self, simulation_movement, delivery, delivery_portal_type,
category_list, simulation_state='delivered'): category_list, simulation_state='delivered', already_solved=False):
self.assertEqual(delivery_portal_type, delivery.getPortalType()) self.assertEqual(delivery_portal_type, delivery.getPortalType())
self.assertEqual(simulation_state, delivery.getSimulationState()) self.assertEqual(simulation_state, delivery.getSimulationState())
self.assertEqual('building', delivery.getCausalityState()) self.assertEqual('building', delivery.getCausalityState())
...@@ -349,6 +349,55 @@ class TestSlapOSSaleInvoiceBuilder(TestSlapOSSalePackingListBuilder): ...@@ -349,6 +349,55 @@ class TestSlapOSSaleInvoiceBuilder(TestSlapOSSalePackingListBuilder):
category_list=category_list + convertCategoryList('causality', category_list=category_list + convertCategoryList('causality',
[delivery_2.getRelativeUrl()]), **invoice_kw) [delivery_2.getRelativeUrl()]), **invoice_kw)
# check delivering of movement later
delivery_line_2_bis = delivery_line_2.Base_createCloneDocument(
batch_mode=1)
delivery_line_2_bis.edit(
price=0.0,
resource='service_module/slapos_instance_setup'
)
simulation_movement_2_bis = applied_rule_2.newContent(
quantity=delivery_line_2_bis.getQuantity(),
price=delivery_line_2_bis.getPrice(),
start_date=delivery_2.getStartDate(),
stop_date=delivery_2.getStopDate(),
delivery=delivery_line_2_bis.getRelativeUrl(),
**simulation_movement_kw
)
simulation_movement_2_bis.edit(resource=delivery_line_2_bis.getResource())
invoice_rule_2_bis = simulation_movement_2_bis.newContent(
portal_type='Applied Rule',
specialise='portal_rules/slapos_invoice_simulation_rule')
invoice_movement_2_bis = invoice_rule_2_bis.newContent(
start_date=delivery_2.getStartDate(),
stop_date=delivery_2.getStopDate(),
quantity=delivery_line_2_bis.getQuantity(),
price=delivery_line_2_bis.getPrice(),
**invoice_movement_kw)
invoice_movement_2_bis.edit(resource=delivery_line_2_bis.getResource())
self.tic()
# test the test
delivery_2.updateCausalityState(solve_automatically=False)
self.tic()
self.assertEqual('solved', delivery_2.getCausalityState())
self.portal.portal_deliveries.slapos_sale_invoice_builder.build(
path='%s/%%' % applied_rule_1.getPath())
self.portal.portal_deliveries.slapos_sale_invoice_builder.build(
path='%s/%%' % applied_rule_2.getPath())
self.tic()
self.checkSimulationMovement(invoice_movement_2_bis)
invoice_line_2_bis = invoice_movement_2_bis.getDeliveryValue()
self.assertNotEqual(invoice_line_2, invoice_line_2_bis)
self.assertEqual(invoice_line_2.getParentValue(),
invoice_line_2_bis.getParentValue())
self.checkDeliveryLine(invoice_movement_2_bis, invoice_line_2_bis,
**line_kw)
self.checkDelivery(invoice_movement_2_bis, invoice_2,
category_list=category_list + convertCategoryList('causality',
[delivery_2.getRelativeUrl()]), **invoice_kw)
class TestSlapOSSaleInvoiceTransactionBuilder(TestSlapOSSalePackingListBuilder): class TestSlapOSSaleInvoiceTransactionBuilder(TestSlapOSSalePackingListBuilder):
def checkSimulationMovement(self, simulation_movement): def checkSimulationMovement(self, simulation_movement):
self.assertNotEqual(0.0, simulation_movement.getDeliveryRatio()) self.assertNotEqual(0.0, simulation_movement.getDeliveryRatio())
......
161 162
\ No newline at end of file \ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment