CashCurrency.py 5.06 KB
Newer Older
Yoshinori Okuji's avatar
Yoshinori Okuji committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
##############################################################################
#
# Copyright (c) 2005 Nexedi SARL and Contributors. All Rights Reserved.
#                    Jean-Paul Smets-Solanes <jp@nexedi.com>
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsability of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# garantees and support are strongly adviced to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
#
##############################################################################

from AccessControl import ClassSecurityInfo

31
from Products.ERP5Type import Permissions, PropertySheet, Constraint, interfaces
Yoshinori Okuji's avatar
Yoshinori Okuji committed
32 33 34 35 36 37 38

from Products.ERP5.Document.Resource import Resource
from zLOG import LOG


class CashCurrency(Resource):
  """
39 40
    CashCurrency defines a cash model for a certain currency.
    Typically, banknotes and coins.
Yoshinori Okuji's avatar
Yoshinori Okuji committed
41 42 43 44 45 46 47 48 49 50 51 52 53
  """

  meta_type = 'ERP5Banking Cash Currency'
  portal_type = 'Cash Currency'
  add_permission = Permissions.AddPortalContent
  isPortalContent = 1
  isRADContent = 1

  # Declarative security
  security = ClassSecurityInfo()
  security.declareObjectProtected(Permissions.View)

  # Declarative interfaces
54
  __implements__ = ( interfaces.IVariated, )
Yoshinori Okuji's avatar
Yoshinori Okuji committed
55 56 57 58 59 60 61 62 63 64 65 66 67 68

  # Declarative properties
  property_sheets = ( PropertySheet.Base
                    , PropertySheet.XMLObject
                    , PropertySheet.CategoryCore
                    , PropertySheet.DublinCore
                    , PropertySheet.Price
                    , PropertySheet.Resource
                    , PropertySheet.Reference
                    , PropertySheet.FlowCapacity
                    , PropertySheet.VariationRange
                    , PropertySheet.CashCurrency
                    )

69 70 71
  security.declareProtected(Permissions.View, 'getTitle')
  def getTitle(self, **kw):
    """
72
      The title depends on the Portal Type and the value, for example :
73 74
        Piece de 500
    """
75
    former = getattr(self, 'former', 0)
76 77 78 79 80 81
    title = self.getPortalType()
    price = self.getBasePrice()
    if price is None:
      price = 'Not Defined'
    else:
      price = '%i' % int(price)
82 83 84 85
    if former:
      return 'Former %s of %s' % (title, price)
    else:
      return '%s of %s' % (title, price)
86 87 88

  security.declareProtected(Permissions.View, 'getTranslatedTitle')
  def getTranslatedTitle(self,**kw):
Yoshinori Okuji's avatar
Yoshinori Okuji committed
89
    """
90
      The title depends on the Portal Type and the value, for example :
Yoshinori Okuji's avatar
Yoshinori Okuji committed
91 92
        Piece de 500
    """
93
    former = getattr(self, 'former', 0)
94
    title = self.getTranslatedPortalType()
Yoshinori Okuji's avatar
Yoshinori Okuji committed
95 96 97 98 99
    price = self.getBasePrice()
    if price is None:
      price = 'Not Defined'
    else:
      price = '%i' % int(price)
100 101 102 103
    if former:
      return  self.Base_translateString('Former ${title} of ${value}', mapping = {'title' : str(title), 'value' : str(price)})
    else:
      return  self.Base_translateString('${title} of ${value}', mapping = {'title' : str(title), 'value' : str(price)})
Yoshinori Okuji's avatar
Yoshinori Okuji committed
104 105 106 107 108 109

  security.declareProtected(Permissions.ModifyPortalContent, '_setVariationList')
  def _setVariationList(self,value):
    """
      We will create cells by the same time
    """
Aurel's avatar
Aurel committed
110
    #LOG('_setVariationList, value',0,value)
Yoshinori Okuji's avatar
Yoshinori Okuji committed
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
    self._categorySetVariationList(value)
    self.setVariationBaseCategoryList(('cash_status','emission_letter','variation'))
    #all_variation_list = self.OrderLine_getMatrixItemList()
    #emission_letter_list = [x for x in all_variation_list if x.startswith('emission_letter')]
    emission_letter_list = [x[1] for x in self.portal_categories.emission_letter.getCategoryChildTitleItemList()[1:]]
    self._categorySetEmissionLetterList(emission_letter_list)
    #cash_status_list = [x for x in all_variation_list if x.startswith('cash_status')]
    cash_status_list = [x[1] for x in self.portal_categories.cash_status.getCategoryChildTitleItemList()[1:]]
    self._categorySetCashStatusList(cash_status_list)

  security.declareProtected(Permissions.ModifyPortalContent, 'setVariationList')
  def setVariationList(self,value):
    """
      Call the private method
    """
    self._setVariationList(value)

  # Cell Related
  security.declareProtected( Permissions.ModifyPortalContent, 'newCellContent' )
  def newCellContent(self, id):
    """
      This method can be overriden
    """
    self.invokeFactory(type_name="Set Mapped Value",id=id)
    return self.get(id)