diff --git a/bt5/erp5_banking_check/SkinTemplateItem/portal_skins/erp5_banking_check_operation/CheckDelivery_generateCheckDetailInputDialog.xml b/bt5/erp5_banking_check/SkinTemplateItem/portal_skins/erp5_banking_check_operation/CheckDelivery_generateCheckDetailInputDialog.xml index 72e14b93538dd2fa4df3b47d9abd4d2549966af4..ae53cace3d69e709273a390530f4bc56cd932b8f 100644 --- a/bt5/erp5_banking_check/SkinTemplateItem/portal_skins/erp5_banking_check_operation/CheckDelivery_generateCheckDetailInputDialog.xml +++ b/bt5/erp5_banking_check/SkinTemplateItem/portal_skins/erp5_banking_check_operation/CheckDelivery_generateCheckDetailInputDialog.xml @@ -102,39 +102,33 @@ def generate_error(listbox_line, column_title, error_message):\n field_error_dict[error_id] = error\n error_value = 1\n \n +def convertTravelerCheckReferenceToInt(traveler_check_reference):\n + """\n + Convert a reaveler check reference into an int.\n + Raise ValueError if traveler_check_reference doesn\'t have a valid format.\n + """\n + if not same_type(traveler_check_reference, \'\'):\n + raise ValueError\n + if len(traveler_check_reference) != 10:\n + raise ValueError\n + return int(traveler_check_reference[4:])\n \n # listbox is not passed at the first time when this script is called.\n # when the user clicks on the Update button, listbox is passed, and\n # the contents must be preserved in the form.\n -new_listbox = []\n if listbox in (None,()) or (previous_resource not in(\'\',None) and previous_resource!=resource):\n + listbox = []\n for i in range(0,10):\n #listbox.append({\'quantity\':1,\'uid\':\'new_%03i\' % i})\n - new_listbox.append({\'quantity\':1})\n + listbox.append({\'quantity\':1})\n \n else:\n for line in listbox:\n - new_listbox.append(line) # Add line from the begining. All changes in the loop will apply to the appended object (pointer).\n destination_payment_reference = line.get(\'destination_payment_reference\',None)\n reference_range_min = line.get(\'reference_range_min\',None)\n reference_range_max = line.get(\'reference_range_max\',None)\n check_amount = line.get(\'check_amount\',None)\n quantity = int(line.get(\'quantity\',0))\n - if item_model.isFixedPrice():\n - if quantity > 1:\n - try:\n - if len(reference_range_min) != 10:\n - raise ValueError, \'Reference must be 10 char long.\'\n - reference_numeric_part = int(reference_range_min[4:])\n - except ValueError, message:\n - generate_error(line, \'reference_range_min\', \'Reference format unrecognized: %s\' % (message, ))\n - else:\n - reference_prefix = reference_range_min[:4]\n - line[\'quantity\'] = 1\n - for increment in xrange(quantity):\n - new_line = line.copy()\n - new_line[\'reference_range_min\'] = \'%s%06d\' % (reference_prefix, reference_numeric_part + increment + 1)\n - new_listbox.append(new_line)\n if destination_payment_reference not in (None,\'\'):\n account_list = [x.getObject() for x in\n context.portal_catalog(portal_type=\'Bank Account\',\n @@ -161,40 +155,38 @@ else:\n #reference_range_max = reference_range_min\n #line[\'reference_range_max\'] = reference_range_max\n if reference_range_min not in (None,\'\') and reference_range_max not in (None,\'\'):\n - check_quantity = 1\n - check_reference=1\n - if not item_model.isFixedPrice():\n - try:\n - reference_range_min = int(reference_range_min)\n - except ValueError:\n - message = \'This number is not valid\'\n - generate_error(line,\'reference_range_min\',message)\n - try:\n - reference_range_max = int(reference_range_max)\n - except ValueError:\n - message = \'This number is not valid\'\n - generate_error(line,\'reference_range_max\',message)\n + if item_model.isFixedPrice():\n + convert_func = convertTravelerCheckReferenceToInt\n + value_denomination = \'traveler check reference\'\n else:\n - check_reference = 0\n + convert_func = int\n + value_denomination = \'number\'\n + try:\n + reference_range_min = convert_func(reference_range_min)\n + except ValueError:\n + generate_error(line, \'reference_range_min\', \'%s is not a valid %s\' % (reference_range_min, value_denomination))\n + try:\n + reference_range_max = convert_func(reference_range_max)\n + except ValueError:\n + generate_error(line, \'reference_range_max\', \'%s is not a valid %s\' % (reference_range_max, value_denomination))\n if check_amount is not None: # In the case of a check book\n check_amount_relative_url = \'/\'.join(check_amount.split(\'/\')[1:])\n line[\'check_amount_relative_url\'] = check_amount_relative_url\n check_amount_value = context.getPortalObject().restrictedTraverse(check_amount_relative_url)\n check_quantity = int(check_amount_value.getQuantity())\n - if check_reference:\n - if (reference_range_max-reference_range_min+1)!=(check_quantity*quantity):\n - message = \'The range is not valid\'\n - generate_error(line,\'reference_range_min\',message)\n - generate_error(line,\'reference_range_max\',message)\n -\n -# Update all listbox_keys\n -for line_index in xrange(len(new_listbox)):\n - new_listbox[line_index][\'listbox_key\'] = \'%03d\' % (line_index, )\n + else:\n + check_quantity = 1\n + if same_type(reference_range_min, 0) and \\\n + same_type(reference_range_max, 0) and \\\n + reference_range_max - reference_range_min + 1 != check_quantity * quantity:\n + message = \'The range is not valid\'\n + generate_error(line,\'reference_range_min\',message)\n + generate_error(line,\'reference_range_max\',message)\n \n if batch_mode:\n return error_value\n else:\n - context.Base_updateDialogForm(listbox=new_listbox\n + context.Base_updateDialogForm(listbox=listbox\n , portal_type = context.getPortalType()\n , resource=resource\n , previous_resource=resource\n @@ -277,7 +269,7 @@ else:\n <string>error_value</string> <string>field_error_dict</string> <string>generate_error</string> - <string>new_listbox</string> + <string>convertTravelerCheckReferenceToInt</string> <string>_getiter_</string> <string>range</string> <string>i</string> @@ -288,27 +280,23 @@ else:\n <string>check_amount</string> <string>int</string> <string>quantity</string> - <string>len</string> - <string>ValueError</string> - <string>_getitem_</string> - <string>reference_numeric_part</string> - <string>message</string> - <string>reference_prefix</string> - <string>_write_</string> - <string>xrange</string> - <string>increment</string> - <string>new_line</string> <string>append</string> <string>$append0</string> <string>x</string> <string>account_list</string> + <string>len</string> + <string>message</string> + <string>_getitem_</string> <string>account</string> + <string>_write_</string> <string>destination_trade</string> - <string>check_quantity</string> - <string>check_reference</string> + <string>convert_func</string> + <string>value_denomination</string> + <string>ValueError</string> <string>check_amount_relative_url</string> <string>check_amount_value</string> - <string>line_index</string> + <string>check_quantity</string> + <string>same_type</string> <string>_apply_</string> </tuple> </value> diff --git a/bt5/erp5_banking_check/SkinTemplateItem/portal_skins/erp5_banking_check_operation/CheckDetail_getFastInputColumnList.xml b/bt5/erp5_banking_check/SkinTemplateItem/portal_skins/erp5_banking_check_operation/CheckDetail_getFastInputColumnList.xml index fd94ad0badbdbb7046178320bb52edfbf6f284ff..138928de04791748b2f0a890fe9394f32fb8aa35 100644 --- a/bt5/erp5_banking_check/SkinTemplateItem/portal_skins/erp5_banking_check_operation/CheckDetail_getFastInputColumnList.xml +++ b/bt5/erp5_banking_check/SkinTemplateItem/portal_skins/erp5_banking_check_operation/CheckDetail_getFastInputColumnList.xml @@ -88,8 +88,7 @@ if item_model.getPortalType()== \'Check Model\':\n if len(item_model.getVariationRangeCategoryList())>0:\n return_list.append([\'check_type\',\'Check Value\'])\n return_list.append([\'reference_range_min\',\'Start Number\'])\n - if not item_model.isFixedPrice():\n - return_list.append([\'reference_range_max\',\'Stop Number\'])\n + return_list.append([\'reference_range_max\',\'Stop Number\'])\n \n if item_model.getPortalType()== \'Checkbook Model\':\n return_list.append([\'destination_payment_reference\',\'Account Reference\'])\n diff --git a/bt5/erp5_banking_check/bt/revision b/bt5/erp5_banking_check/bt/revision index eaf7a13d15e02e082b62c96f10b881336ece332c..7730ef7f3e0586b9070623baed6032dff904c9ea 100644 --- a/bt5/erp5_banking_check/bt/revision +++ b/bt5/erp5_banking_check/bt/revision @@ -1 +1 @@ -87 \ No newline at end of file +89 \ No newline at end of file