From 90c019e36f9deb2158b2b65def8d9c63e641dc17 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aur=C3=A9lien=20Calonne?= <aurel@nexedi.com>
Date: Mon, 3 Jan 2011 10:18:13 +0000
Subject: [PATCH] pay sheet model lines can vary on multiple base applications
 and generate cell ranges which is a combination of different base
 application, update asCellRange script for this case

git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@41939 20353a03-c40f-0410-a6d1-a30d3c3de9de
---
 .../erp5_payroll/PaySheetLine_asCellRange.xml | 29 ++++++++++++++-----
 .../PaySheetModelLine_asCellRange.xml         | 14 ++++++++-
 bt5/erp5_payroll/bt/revision                  |  2 +-
 3 files changed, 36 insertions(+), 9 deletions(-)

diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetLine_asCellRange.xml b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetLine_asCellRange.xml
index 55cf7aa882..4df7d80e2b 100644
--- a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetLine_asCellRange.xml
+++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetLine_asCellRange.xml
@@ -57,14 +57,29 @@ cell_range = []\n
 if resource is not None:\n
   base_category_list = resource.getVariationBaseCategoryList()\n
   for base_category in base_category_list:\n
-    if matrixbox == 1:\n
-      # XXX matrixbox is right_display (not as listfield) => invert display and value in item\n
-      cell_range.append(map(lambda x: (x[1],x[0]), \n
-        context.getVariationCategoryItemList(base_category_list=\\\n
-            (base_category,) ) ) )\n
+    if base_category == "base_application":\n
+      base_application_variation_dict = {}\n
+      variation_list = context.getVariationCategoryList(base_category_list=(base_category,))\n
+      for variation in variation_list:\n
+        # We split at the sublevel of base_application/base_amount/payroll/XXX\n
+        base_variation = \'/\'.join(variation.split(\'/\')[:4])\n
+        base_application_variation_dict.setdefault(base_variation, []) \n
+        base_application_variation_dict[base_variation].append(variation)\n
+\n
+      for v in base_application_variation_dict.values():\n
+        if matrixbox == 1:\n
+          cell_range.append(map(lambda x: (x[1],x[0]), v))\n
+        else:\n
+          cell_range.append(v)\n
     else:\n
-      cell_range.append(context.getVariationCategoryList(base_category_list=\\\n
-          (base_category,)))\n
+      if matrixbox == 1:\n
+        # XXX matrixbox is right_display (not as listfield) => invert display and value in item\n
+        cell_range.append(map(lambda x: (x[1],x[0]), \n
+          context.getVariationCategoryItemList(base_category_list=\\\n
+              (base_category,) ) ) )\n
+      else:\n
+        cell_range.append(context.getVariationCategoryList(base_category_list=\\\n
+            (base_category,)))\n
 \n
   cell_range = filter(lambda x: x != [], cell_range )\n
 \n
diff --git a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetModelLine_asCellRange.xml b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetModelLine_asCellRange.xml
index 558323a059..8f776efd0f 100644
--- a/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetModelLine_asCellRange.xml
+++ b/bt5/erp5_payroll/SkinTemplateItem/portal_skins/erp5_payroll/PaySheetModelLine_asCellRange.xml
@@ -110,7 +110,19 @@ else:\n
   variation_base_category_list = context.getVariationBaseCategoryList()\n
   variation_base_category_list.sort()\n
   for base_category in variation_base_category_list:\n
-    list_of_category_list.append(\\\n
+    if base_category == "base_application":\n
+      base_application_variation_dict = {}\n
+      variation_list = context.getVariationCategoryList(base_category_list=(base_category,))\n
+      for variation in variation_list:\n
+        # We split at the sublevel of base_application/base_amount/payroll/XXX\n
+        base_variation = \'/\'.join(variation.split(\'/\')[:4])\n
+        base_application_variation_dict.setdefault(base_variation, []) \n
+        base_application_variation_dict[base_variation].append(variation)\n
+\n
+      for v in base_application_variation_dict.values():\n
+        list_of_category_list.append(v)\n
+    else:\n
+      list_of_category_list.append(\\\n
         context.getVariationCategoryList(base_category_list=base_category))\n
   return list_of_category_list\n
 \n
diff --git a/bt5/erp5_payroll/bt/revision b/bt5/erp5_payroll/bt/revision
index f27ce70ac9..db08d2acf8 100644
--- a/bt5/erp5_payroll/bt/revision
+++ b/bt5/erp5_payroll/bt/revision
@@ -1 +1 @@
-574
+575
-- 
2.30.9