Author: jonesde
Date: Fri Apr 6 21:41:09 2007 New Revision: 526361 URL: http://svn.apache.org/viewvc?view=rev&rev=526361 Log: A bunch of improvements on the sales invoice by product category report, plus some skeletons and initial artifacts for the other planned reports Added: ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/reports/SalesInvoiceByProductCategorySummary.bsh - copied, changed from r526353, ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/reports/SalesInvoiceSummary.bsh ofbiz/trunk/applications/accounting/webapp/accounting/reports/SalesInvoiceByProductCategorySummary.ftl - copied, changed from r526353, ofbiz/trunk/applications/accounting/webapp/accounting/reports/SalesInvoiceSummary.ftl Removed: ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/reports/SalesInvoiceSummary.bsh ofbiz/trunk/applications/accounting/webapp/accounting/reports/SalesInvoiceSummary.ftl Modified: ofbiz/trunk/applications/accounting/config/AccountingUiLabels.properties ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml ofbiz/trunk/applications/accounting/widget/ReportFinancialSummaryForms.xml ofbiz/trunk/applications/accounting/widget/ReportFinancialSummaryScreens.xml Modified: ofbiz/trunk/applications/accounting/config/AccountingUiLabels.properties URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/config/AccountingUiLabels.properties?view=diff&rev=526361&r1=526360&r2=526361 ============================================================================== --- ofbiz/trunk/applications/accounting/config/AccountingUiLabels.properties (original) +++ ofbiz/trunk/applications/accounting/config/AccountingUiLabels.properties Fri Apr 6 21:41:09 2007 @@ -477,7 +477,11 @@ PageTitleUnpostedTransactions=Un-posted Accounting Transactions PageTitleFinancialSummaryReportOptions=Financial Summary Report Options -PageTitleSalesInvoiceSummary=Sales Invoice Summary +PageTitleSalesInvoiceByProductCategorySummary=Sales Invoice By Product Category Summary +PageTitleSalesInvoiceByProductGlAccountSummary=Sales Invoice By Product GL Account Summary +PageTitlePaymentByMethodSummary=Payments By Method Summary +PageTitleInventoryIssueSummary=Inventory Issue Summary +PageTitleFinancialAccountSummary=Financial Account Summary PartyPartyId=Party ID PartyRoles=Roles Copied: ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/reports/SalesInvoiceByProductCategorySummary.bsh (from r526353, ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/reports/SalesInvoiceSummary.bsh) URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/reports/SalesInvoiceByProductCategorySummary.bsh?view=diff&rev=526361&p1=ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/reports/SalesInvoiceSummary.bsh&r1=526353&p2=ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/reports/SalesInvoiceByProductCategorySummary.bsh&r2=526361 ============================================================================== --- ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/reports/SalesInvoiceSummary.bsh (original) +++ ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/actions/reports/SalesInvoiceByProductCategorySummary.bsh Fri Apr 6 21:41:09 2007 @@ -27,9 +27,7 @@ //NOTE: this code ignores from/thru dates on the products and categories under the rootProductCategoryId! -//TODO: variant product support for products in category -//TODO: show product/category names with content wrapper -//TODO: monthly totals +//TODO_MAYBE: variant product support for products in category, and product shown directly (should we really do this?) //TODO: // get products and categories under the root category @@ -86,12 +84,21 @@ // get the Calendar object for the current month (specifed by month, year Integer values in the context) monthCal = Calendar.getInstance(); monthCal.set(Calendar.YEAR, year.intValue()); -monthCal.set(Calendar.MONTH, month.intValue()); +monthCal.set(Calendar.MONTH, (month.intValue() - 1)); + +nextMonthCal = Calendar.getInstance(); +nextMonthCal.setTimeInMillis(monthCal.getTimeInMillis()); +nextMonthCal.add(Calendar.MONTH, 1); // iterate through the days and do the queries productResultMapByDayList = FastList.newInstance(); productNullResultByDayList = FastList.newInstance(); categoryResultMapByDayList = FastList.newInstance(); + +monthProductResultMap = FastMap.newInstance(); +monthCategoryResultMap = FastMap.newInstance(); +monthProductNullResult = FastMap.newInstance(); + daysInMonth = monthCal.getActualMaximum(Calendar.DAY_OF_MONTH); for (int currentDay = 0; currentDay <= daysInMonth; currentDay++) { currentDayCal = Calendar.getInstance(); @@ -114,6 +121,9 @@ productResultMap = FastMap.newInstance(); while ((productResult = productResultListIterator.next()) != null) { productResultMap.put(productResult.get("productId"), productResult); + monthProductResult = UtilMisc.getMapFromMap(monthProductResultMap, productResult.get("productId")); + UtilMisc.addToBigDecimalInMap(monthProductResult, "quantityTotal", productResult.getBigDecimal("quantityTotal")); + UtilMisc.addToBigDecimalInMap(monthProductResult, "amountTotal", productResult.getBigDecimal("amountTotal")); } productResultListIterator.close(); productResultMapByDayList.add(productResultMap); @@ -128,6 +138,9 @@ categoryResultMap = FastMap.newInstance(); while ((categoryResult = categoryResultListIterator.next()) != null) { categoryResultMap.put(categoryResult.get("productCategoryId"), categoryResult); + monthCategoryResult = UtilMisc.getMapFromMap(monthCategoryResultMap, categoryResult.get("productCategoryId")); + UtilMisc.addToBigDecimalInMap(monthCategoryResult, "quantityTotal", categoryResult.getBigDecimal("quantityTotal")); + UtilMisc.addToBigDecimalInMap(monthCategoryResult, "amountTotal", categoryResult.getBigDecimal("amountTotal")); } categoryResultListIterator.close(); categoryResultMapByDayList.add(categoryResultMap); @@ -144,6 +157,8 @@ productNullResultListIterator.close(); if (productNullResult != null) { productNullResultByDayList.add(productNullResult); + UtilMisc.addToBigDecimalInMap(monthProductNullResult, "quantityTotal", productNullResult.getBigDecimal("quantityTotal")); + UtilMisc.addToBigDecimalInMap(monthProductNullResult, "amountTotal", productNullResult.getBigDecimal("amountTotal")); } else { // no result, add an empty Map place holder productNullResultByDayList.add(FastMap.newInstance()); @@ -154,7 +169,10 @@ context.put("productNullResultByDayList", productResultMapByDayList); context.put("categoryResultMapByDayList", categoryResultMapByDayList); +context.put("monthProductResultMap", monthProductResultMap); +context.put("monthCategoryResultMap", monthCategoryResultMap); +context.put("monthProductNullResult", monthProductNullResult); + context.put("productCategoryList", productCategoryList); context.put("productList", productList); - Modified: ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml?view=diff&rev=526361&r1=526360&r2=526361 ============================================================================== --- ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml (original) +++ ofbiz/trunk/applications/accounting/webapp/accounting/WEB-INF/controller.xml Fri Apr 6 21:41:09 2007 @@ -1313,7 +1313,7 @@ <!-- ================ Financial Summary Report requests ================== --> <request-map uri="FinancialSummaryReportOptions"><security https="true" auth="true"/><response name="success" type="view" value="FinancialSummaryReportOptions"/></request-map> - <request-map uri="SalesInvoiceSummary"><security https="true" auth="true"/><response name="success" type="view" value="SalesInvoiceSummary"/></request-map> + <request-map uri="SalesInvoiceByProductCategorySummary"><security https="true" auth="true"/><response name="success" type="view" value="SalesInvoiceByProductCategorySummary"/></request-map> <!-- end of request mappings --> <!-- View Mappings --> @@ -1475,7 +1475,7 @@ <!-- Financial Summary Reports --> <view-map name="FinancialSummaryReportOptions" type="screen" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#FinancialSummaryReportOptions"/> - <view-map name="SalesInvoiceSummary" type="screen" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#SalesInvoiceSummary"/> + <view-map name="SalesInvoiceByProductCategorySummary" type="screen" page="component://accounting/widget/ReportFinancialSummaryScreens.xml#SalesInvoiceByProductCategorySummary"/> <!-- end of view mappings --> Copied: ofbiz/trunk/applications/accounting/webapp/accounting/reports/SalesInvoiceByProductCategorySummary.ftl (from r526353, ofbiz/trunk/applications/accounting/webapp/accounting/reports/SalesInvoiceSummary.ftl) URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/webapp/accounting/reports/SalesInvoiceByProductCategorySummary.ftl?view=diff&rev=526361&p1=ofbiz/trunk/applications/accounting/webapp/accounting/reports/SalesInvoiceSummary.ftl&r1=526353&p2=ofbiz/trunk/applications/accounting/webapp/accounting/reports/SalesInvoiceByProductCategorySummary.ftl&r2=526361 ============================================================================== --- ofbiz/trunk/applications/accounting/webapp/accounting/reports/SalesInvoiceSummary.ftl (original) +++ ofbiz/trunk/applications/accounting/webapp/accounting/reports/SalesInvoiceByProductCategorySummary.ftl Fri Apr 6 21:41:09 2007 @@ -25,10 +25,9 @@ </#if> </#macro> -<div>Sales Invoice Summary Report for:</div> <ul> - <li>Month: ${(month + 1)}/${year}</li> - <li>Root Category: ${rootProductCategory.categoryName?if_exists} [${rootProductCategoryId}]</li> + <li>Month: ${month}/${year}</li> + <li>Root Category: ${(Static["org.ofbiz.product.category.CategoryContentWrapper"].getProductCategoryContentAsText(rootProductCategory, "CATEGORY_NAME", locale, dispatcher))?if_exists} [${rootProductCategoryId}]</li> <li>Organization: ${(organizationPartyName.groupName)?if_exists} [${organizationPartyId?default("No Organization Specified")}]</li> <li>Currency: ${(currencyUom.description)?if_exists} [${currencyUomId?default("No Currency Specified")}]</li> </il> @@ -39,20 +38,20 @@ <th>Day</th> <th>[No Product]</th> <#list productList as product> - <th>${product.productName?if_exists} [${product.productId}]</th> + <th>${product.internalName?default((Static["org.ofbiz.product.product.ProductContentWrapper"].getProductContentAsText(product, "PRODUCT_NAME", locale, dispatcher))?if_exists)}<br/>P:[${product.productId}]</th> </#list> <#list productCategoryList as productCategory> - <th>${productCategory.categoryName?if_exists} [${productCategory.productCategoryId}]</th> + <th>${(Static["org.ofbiz.product.category.CategoryContentWrapper"].getProductCategoryContentAsText(productCategory, "CATEGORY_NAME", locale, dispatcher))?if_exists}<br/>C:[${productCategory.productCategoryId}]</th> </#list> </tr> - <#-- Days of the month --> + <!-- Days of the month --> <#list productNullResultByDayList as productNullResult> <#assign productResultMap = productResultMapByDayList.get(productNullResult_index)/> <#assign categoryResultMap = categoryResultMapByDayList.get(productNullResult_index)/> <#-- now do the null product, then iterate through the products, then categories --> <tr> - <td>${(productNullResult_index + 1)}</td> + <th>${(productNullResult_index + 1)}</th> <td><@resultSummary resultMap=productNullResult/></td> <#list productList as product> <#assign productResult = productResultMap[product.productId]?if_exists/> @@ -64,5 +63,18 @@ </#list> </tr> </#list> - <#-- Totals for the month --> + + <!-- Totals for the month --> + <tr> + <th>Month Total</th> + <td><@resultSummary resultMap=monthProductNullResult/></td> + <#list productList as product> + <#assign productResult = monthProductResultMap[product.productId]?if_exists/> + <td><@resultSummary resultMap=productResult/></td> + </#list> + <#list productCategoryList as productCategory> + <#assign categoryResult = monthCategoryResultMap[productCategory.productCategoryId]?if_exists/> + <td><@resultSummary resultMap=categoryResult/></td> + </#list> + </tr> </table> Modified: ofbiz/trunk/applications/accounting/widget/ReportFinancialSummaryForms.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/widget/ReportFinancialSummaryForms.xml?view=diff&rev=526361&r1=526360&r2=526361 ============================================================================== --- ofbiz/trunk/applications/accounting/widget/ReportFinancialSummaryForms.xml (original) +++ ofbiz/trunk/applications/accounting/widget/ReportFinancialSummaryForms.xml Fri Apr 6 21:41:09 2007 @@ -1,45 +1,38 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- - Licensed to the Apache Software Foundation (ASF) under one - or more contributor license agreements. See the NOTICE file - distributed with this work for additional information - regarding copyright ownership. The ASF licenses this file - to you under the Apache License, Version 2.0 (the - "License"); you may not use this file except in compliance - with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, - software distributed under the License is distributed on an - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - KIND, either express or implied. See the License for the - specific language governing permissions and limitations - under the License. +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. --> <forms xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.ofbiz.org/dtds/widget-form.xsd"> - - <form name="SalesInvoiceSummaryOptions" type="single" target="SalesInvoiceSummary"> + + <form name="BaseSummaryOptions" type="single"> <field name="month" required-field="true"> <drop-down allow-empty="false"> - <option key="0" description="1-January"/> - <option key="1" description="2-February"/> - <option key="2" description="3-March"/> - <option key="3" description="4-April"/> - <option key="4" description="5-May"/> - <option key="5" description="6-June"/> - <option key="6" description="7-July"/> - <option key="7" description="8-August"/> - <option key="8" description="9-September"/> - <option key="9" description="10-October"/> - <option key="10" description="11-November"/> - <option key="11" description="12-December"/> + <option key="01" description="1-January"/><option key="02" description="2-February"/> + <option key="03" description="3-March"/><option key="04" description="4-April"/> + <option key="05" description="5-May"/><option key="06" description="6-June"/> + <option key="07" description="7-July"/><option key="08" description="8-August"/> + <option key="09" description="9-September"/><option key="10" description="10-October"/> + <option key="11" description="11-November"/><option key="12" description="12-December"/> </drop-down> </field> - <field name="year" required-field="true"><text size="4" default-value="2007"/></field> - <field name="rootProductCategoryId" required-field="true"><lookup target-form-name="LookupProductCategory"/></field> + <field name="year" required-field="true"><text size="4"/></field> <field name="organizationPartyId" required-field="false"> <drop-down allow-empty="true" no-current-selected-key="Company"> <entity-options entity-name="PartyRoleNameDetail" description="${groupName} [${partyId}]" key-field-name="partyId"> @@ -56,6 +49,22 @@ </entity-options> </drop-down> </field> + </form> + + <form name="SalesInvoiceByProductCategorySummaryOptions" type="single" target="SalesInvoiceByProductCategorySummary" extends="BaseSummaryOptions"> + <field name="rootProductCategoryId" required-field="true"><lookup target-form-name="LookupProductCategory"/></field> + <field name="submitButton" widget-style="smallSubmit"><submit button-type="button"/></field> + </form> + <form name="SalesInvoiceByProductGlAccountSummaryOptions" type="single" target="SalesInvoiceByProductGlAccountSummary" extends="BaseSummaryOptions"> + <field name="submitButton" widget-style="smallSubmit"><submit button-type="button"/></field> + </form> + <form name="PaymentByMethodSummaryOptions" type="single" target="PaymentByMethodSummary" extends="BaseSummaryOptions"> + <field name="submitButton" widget-style="smallSubmit"><submit button-type="button"/></field> + </form> + <form name="InventoryIssueSummaryOptions" type="single" target="InventoryIssueSummary" extends="BaseSummaryOptions"> + <field name="submitButton" widget-style="smallSubmit"><submit button-type="button"/></field> + </form> + <form name="FinancialAccountSummaryOptions" type="single" target="FinancialAccountSummary" extends="BaseSummaryOptions"> <field name="submitButton" widget-style="smallSubmit"><submit button-type="button"/></field> </form> </forms> Modified: ofbiz/trunk/applications/accounting/widget/ReportFinancialSummaryScreens.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/widget/ReportFinancialSummaryScreens.xml?view=diff&rev=526361&r1=526360&r2=526361 ============================================================================== --- ofbiz/trunk/applications/accounting/widget/ReportFinancialSummaryScreens.xml (original) +++ ofbiz/trunk/applications/accounting/widget/ReportFinancialSummaryScreens.xml Fri Apr 6 21:41:09 2007 @@ -26,31 +26,43 @@ <actions> <set field="titleProperty" value="PageTitleFinancialSummaryReportOptions"/> <set field="headerItem" value="FinancialSummryReports"/> + + <set field="month" from-field="parameters.month" default-value="${bsh:org.ofbiz.base.util.UtilDateTime.nowDateString("MM")}"/> + <set field="year" from-field="parameters.year" default-value="${bsh:org.ofbiz.base.util.UtilDateTime.nowDateString("yyyy")}"/> </actions> <widgets> <decorator-screen name="main-decorator" location="${parameters.mainDecoratorLocation}"> <decorator-section name="body"> <container><label style="head1" text="${uiLabelMap.PageTitleFinancialSummaryReportOptions}"/></container> - <include-form name="SalesInvoiceSummaryOptions" location="component://accounting/widget/ReportFinancialSummaryForms.xml"/> - <!-- - <include-form name="InventoryOutSummaryOptions" location="component://accounting/widget/ReportFinancialSummaryForms.xml"/> - <include-form name="PaymentCreditCardSummaryOptions" location="component://accounting/widget/ReportFinancialSummaryForms.xml"/> + + <container><label style="head2" text="${uiLabelMap.PageTitleSalesInvoiceByProductCategorySummary}"/></container> + <include-form name="SalesInvoiceByProductCategorySummaryOptions" location="component://accounting/widget/ReportFinancialSummaryForms.xml"/> + + <container><label style="head2" text="${uiLabelMap.PageTitleSalesInvoiceByProductGlAccountSummary}"/></container> + <include-form name="SalesInvoiceByProductGlAccountSummaryOptions" location="component://accounting/widget/ReportFinancialSummaryForms.xml"/> + + <container><label style="head2" text="${uiLabelMap.PageTitlePaymentByMethodSummary}"/></container> + <include-form name="PaymentByMethodSummaryOptions" location="component://accounting/widget/ReportFinancialSummaryForms.xml"/> + + <container><label style="head2" text="${uiLabelMap.PageTitleInventoryIssueSummary}"/></container> + <include-form name="InventoryIssueSummaryOptions" location="component://accounting/widget/ReportFinancialSummaryForms.xml"/> + + <container><label style="head2" text="${uiLabelMap.PageTitleFinancialAccountSummary}"/></container> <include-form name="FinancialAccountSummaryOptions" location="component://accounting/widget/ReportFinancialSummaryForms.xml"/> - --> </decorator-section> </decorator-screen> </widgets> </section> </screen> - <screen name="SalesInvoiceSummary"> + <screen name="SalesInvoiceByProductCategorySummary"> <section> <actions> - <set field="titleProperty" value="PageTitleSalesInvoiceSummary"/> + <set field="titleProperty" value="PageTitleSalesInvoiceByProductCategorySummary"/> <set field="headerItem" value="FinancialSummryReports"/> - <set field="month" from-field="parameters.month" type="Integer" default-value="0"/> - <set field="year" from-field="parameters.year" type="Integer"/> + <set field="month" from-field="parameters.month" type="Integer" default-value="${bsh:org.ofbiz.base.util.UtilDateTime.nowDateString("MM")}"/> + <set field="year" from-field="parameters.year" type="Integer" default-value="${bsh:org.ofbiz.base.util.UtilDateTime.nowDateString("yyyy")}"/> <set field="rootProductCategoryId" from-field="parameters.rootProductCategoryId"/> <set field="organizationPartyId" from-field="parameters.organizationPartyId"/> <set field="currencyUomId" from-field="parameters.currencyUomId"/> @@ -65,13 +77,43 @@ <field-map field-name="uomId" env-name="currencyUomId"/> </entity-one> - <script location="component://accounting/webapp/accounting/WEB-INF/actions/reports/SalesInvoiceSummary.bsh"/> + <script location="component://accounting/webapp/accounting/WEB-INF/actions/reports/SalesInvoiceByProductCategorySummary.bsh"/> + </actions> + <widgets> + <decorator-screen name="CommonFinAccountDecorator" location="${parameters.mainDecoratorLocation}"> + <decorator-section name="body"> + <label style="head1" text="${uiLabelMap.PageTitleSalesInvoiceByProductCategorySummary}"/> + <platform-specific><html><html-template location="component://accounting/webapp/accounting/reports/SalesInvoiceByProductCategorySummary.ftl"/></html></platform-specific> + </decorator-section> + </decorator-screen> + </widgets> + </section> + </screen> + <screen name="PaymentByMethodSummary"> + <section> + <actions> + <set field="titleProperty" value="PageTitlePaymentByMethodSummary"/> + <set field="headerItem" value="FinancialSummryReports"/> + + <set field="month" from-field="parameters.month" type="Integer" default-value="${bsh:org.ofbiz.base.util.UtilDateTime.nowDateString("MM")}"/> + <set field="year" from-field="parameters.year" type="Integer" default-value="${bsh:org.ofbiz.base.util.UtilDateTime.nowDateString("yyyy")}"/> + <set field="organizationPartyId" from-field="parameters.organizationPartyId"/> + <set field="currencyUomId" from-field="parameters.currencyUomId"/> + + <entity-one entity-name="PartyNameView" value-name="organizationPartyName" auto-field-map="false" use-cache="true"> + <field-map field-name="partyId" env-name="organizationPartyId"/> + </entity-one> + <entity-one entity-name="Uom" value-name="currencyUom" auto-field-map="false" use-cache="true"> + <field-map field-name="uomId" env-name="currencyUomId"/> + </entity-one> + + <script location="component://accounting/webapp/accounting/WEB-INF/actions/reports/PaymentByMethodSummary.bsh"/> </actions> <widgets> <decorator-screen name="CommonFinAccountDecorator" location="${parameters.mainDecoratorLocation}"> <decorator-section name="body"> - <label style="head1" text="${uiLabelMap.PageTitleSalesInvoiceSummary}"/> - <platform-specific><html><html-template location="component://accounting/webapp/accounting/reports/SalesInvoiceSummary.ftl"/></html></platform-specific> + <label style="head1" text="${uiLabelMap.PageTitlePaymentByMethodSummary}"/> + <platform-specific><html><html-template location="component://accounting/webapp/accounting/reports/PaymentByMethodSummary.ftl"/></html></platform-specific> </decorator-section> </decorator-screen> </widgets> |
Free forum by Nabble | Edit this page |