[Erp5-report] r11703 - in /erp5/trunk/products/ERP5: Document/Movement.py tests/testAmount.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Dec 12 18:58:04 CET 2006


Author: jerome
Date: Tue Dec 12 18:58:00 2006
New Revision: 11703

URL: http://svn.erp5.org?rev=11703&view=rev
Log:
support debit and credit simultaneous edit for movement


Modified:
    erp5/trunk/products/ERP5/Document/Movement.py
    erp5/trunk/products/ERP5/tests/testAmount.py

Modified: erp5/trunk/products/ERP5/Document/Movement.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/Document/Movement.py?rev=11703&r1=11702&r2=11703&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/Document/Movement.py (original)
+++ erp5/trunk/products/ERP5/Document/Movement.py Tue Dec 12 18:58:00 2006
@@ -732,6 +732,21 @@
   setDestinationDebit = setSourceCredit
   setDestinationCredit = setSourceDebit
 
+  security.declarePrivate('_edit')
+  def _edit(self, **kw):
+    """Overloaded _edit to support setting debit and credit at the same time,
+    which is required for the GUI.
+    """
+    quantity = 0
+    if kw.has_key('source_debit') and kw.has_key('source_credit'):
+      quantity += (kw.pop('source_credit') or 0 - kw.pop('source_debit') or 0)
+      kw['quantity'] = quantity
+    if kw.has_key('destination_debit') and kw.has_key('destination_credit'):
+      quantity += (kw.pop('destination_debit') or 0 -
+                   kw.pop('destination_credit') or 0)
+      kw['quantity'] = quantity
+    XMLObject._edit(self, **kw)
+
   # Debit and credit methods for asset
   security.declareProtected( Permissions.AccessContentsInformation,
                              'getSourceAssetDebit' )

Modified: erp5/trunk/products/ERP5/tests/testAmount.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testAmount.py?rev=11703&r1=11702&r2=11703&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testAmount.py (original)
+++ erp5/trunk/products/ERP5/tests/testAmount.py Tue Dec 12 18:58:00 2006
@@ -192,9 +192,6 @@
     )
 
   def test_01_variationProperty(self, quiet=0, run=run_all_test):
-    """
-      Test property existence
-    """
     if not run: return
     sequence_list = SequenceList()
     # Test setVariationPropertyDict and
@@ -236,6 +233,102 @@
     sequence_list.addSequenceString(sequence_string)
     sequence_list.play(self)
 
+class TestMovement(ERP5TypeTestCase):
+  """Tests for Movement class
+  """
+  def afterSetUp(self):
+    self.login()
+    self.portal = self.getPortal()
+
+  def _makeOne(self, *args, **kw):
+    from Products.ERP5.Document.Movement import Movement
+    mvt = Movement(*args, **kw)
+    # return it wrapped, so that it can access the types tool in _aq_dynamic
+    return mvt.__of__(self.portal)
+
+  def testQuantity(self):
+    mvt = self._makeOne('mvt')
+    mvt.setQuantity(10)
+    self.assertEquals(10, mvt.getQuantity())
+    self.assertEquals(None, mvt.getTotalPrice())
+    mvt.edit(quantity=20)
+    self.assertEquals(20, mvt.getQuantity())
+  
+  def testPrice(self):
+    mvt = self._makeOne('mvt')
+    self.assertEquals(None, mvt.getPrice())
+    mvt.setPrice(10)
+    self.assertEquals(10, mvt.getPrice())
+    self.assertEquals(0, mvt.getTotalPrice())
+    mvt.setQuantity(1)
+    self.assertEquals(10, mvt.getTotalPrice())
+    
+  def testSourceDebit(self):
+    mvt = self._makeOne('mvt')
+    mvt.setSourceDebit(10)
+    self.assertEquals(10, mvt.getSourceDebit())
+    self.assertEquals(0, mvt.getSourceCredit())
+    self.assertEquals(-10, mvt.getQuantity())
+
+    mvt.edit(source_debit=20)
+    self.assertEquals(20, mvt.getSourceDebit())
+    self.assertEquals(0, mvt.getSourceCredit())
+    self.assertEquals(-20, mvt.getQuantity())
+  
+  def testSourceCredit(self):
+    mvt = self._makeOne('mvt')
+    mvt.setSourceCredit(10)
+    self.assertEquals(0, mvt.getSourceDebit())
+    self.assertEquals(10, mvt.getSourceCredit())
+    self.assertEquals(10, mvt.getQuantity())
+
+    mvt.edit(source_credit=20)
+    self.assertEquals(0, mvt.getSourceDebit())
+    self.assertEquals(20, mvt.getSourceCredit())
+    self.assertEquals(20, mvt.getQuantity())
+  
+  def testSourceDebitCredit(self):
+    mvt = self._makeOne('mvt')
+    mvt.setSourceCredit(10)
+    mvt.edit(source_credit=0, source_debit=10)
+    self.assertEquals(10, mvt.getSourceDebit())
+    self.assertEquals(0, mvt.getSourceCredit())
+    self.assertEquals(-10, mvt.getQuantity())
+
+  def testDestinationDebit(self):
+    mvt = self._makeOne('mvt')
+    mvt.setDestinationDebit(10)
+    self.assertEquals(10, mvt.getDestinationDebit())
+    self.assertEquals(0, mvt.getDestinationCredit())
+    self.assertEquals(10, mvt.getQuantity())
+
+    mvt.edit(destination_debit=20)
+    self.assertEquals(20, mvt.getDestinationDebit())
+    self.assertEquals(0, mvt.getDestinationCredit())
+    self.assertEquals(20, mvt.getQuantity())
+  
+  def testDestinationCredit(self):
+    mvt = self._makeOne('mvt')
+    mvt.setDestinationCredit(10)
+    self.assertEquals(0, mvt.getDestinationDebit())
+    self.assertEquals(10, mvt.getDestinationCredit())
+    self.assertEquals(-10, mvt.getQuantity())
+
+    mvt.edit(destination_credit=20)
+    self.assertEquals(0, mvt.getDestinationDebit())
+    self.assertEquals(20, mvt.getDestinationCredit())
+    self.assertEquals(-20, mvt.getQuantity())
+  
+  def testDestinationDebitCredit(self):
+    mvt = self._makeOne('mvt')
+    mvt.setDestinationCredit(10)
+    mvt.edit(destination_credit=0, destination_debit=10)
+    self.assertEquals(10, mvt.getDestinationDebit())
+    self.assertEquals(0, mvt.getDestinationCredit())
+    self.assertEquals(10, mvt.getQuantity())
+  
+  # TODO: test asset price
+
 if __name__ == '__main__':
   framework()
 else:
@@ -243,4 +336,5 @@
   def test_suite():
     suite = unittest.TestSuite()
     suite.addTest(unittest.makeSuite(TestAmount))
+    suite.addTest(unittest.makeSuite(TestMovement))
     return suite




More information about the Erp5-report mailing list