[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