Author: adrianc
Date: Wed Aug 6 14:22:29 2008 New Revision: 683418 URL: http://svn.apache.org/viewvc?rev=683418&view=rev Log: A couple of improvements to fixed asset maintenance: 1. When a fixed asset maint status is changed to Completed, the associated work effort status is changed to Completed as well. In addition, work effort party assignment thruDates are updated. 2. A scheduled job looks for fixed asset product maints set up on time intervals and automatically creates maintenances when the specified time interval passes. Right now it only supports day, month, and year intervals. More can be added if needed. Modified: ofbiz/trunk/applications/accounting/data/AccountingTypeData.xml ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/fixedasset/FixedAssetServices.xml ofbiz/trunk/applications/accounting/servicedef/services_fixedasset.xml Modified: ofbiz/trunk/applications/accounting/data/AccountingTypeData.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/data/AccountingTypeData.xml?rev=683418&r1=683417&r2=683418&view=diff ============================================================================== --- ofbiz/trunk/applications/accounting/data/AccountingTypeData.xml (original) +++ ofbiz/trunk/applications/accounting/data/AccountingTypeData.xml Wed Aug 6 14:22:29 2008 @@ -158,6 +158,12 @@ <StatusItem description="Completed" sequenceId="10" statusCode="COMPLETED" statusId="FAM_COMPLETED" statusTypeId="FIXEDAST_MNT_STATUS"/> <StatusItem description="Cancelled" sequenceId="99" statusCode="CANCELLED" statusId="FAM_CANCELLED" statusTypeId="FIXEDAST_MNT_STATUS"/> + <!-- The following three elements set up a regularly scheduled job that will automatically create + fixed asset maintenances from ProductMaint time intervals. --> + <RecurrenceRule recurrenceRuleId="FAM_AUTO_CREATE" untilDateTime="" frequency="MINUTELY" intervalNumber="5" countNumber="-1"/> + <RecurrenceInfo recurrenceInfoId="FAM_AUTO_CREATE" startDateTime="2000-01-01 00:00:00.000" recurrenceRuleId="FAM_AUTO_CREATE" recurrenceCount="0"/> + <JobSandbox jobId="FAM_AUTO_CREATE" jobName="Auto-create Fixed Asset Maintenances" runTime="2000-01-01 00:00:00.000" serviceName="createMaintsFromTimeInterval" poolId="pool" runAsUser="system" recurrenceInfoId="FAM_AUTO_CREATE"/> + <!-- Fixed Asset Maintenance party roles --> <RoleType description="Fixed Asset Maint Assignee" hasTable="N" roleTypeId="FAM_ASSIGNEE"/> <RoleType description="Maintenance Supplier or Service" hasTable="N" parentTypeId="FAM_ASSIGNEE" roleTypeId="FAM_SUPPLIER"/> Modified: ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/fixedasset/FixedAssetServices.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/fixedasset/FixedAssetServices.xml?rev=683418&r1=683417&r2=683418&view=diff ============================================================================== --- ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/fixedasset/FixedAssetServices.xml (original) +++ ofbiz/trunk/applications/accounting/script/org/ofbiz/accounting/fixedasset/FixedAssetServices.xml Wed Aug 6 14:22:29 2008 @@ -244,7 +244,8 @@ </simple-method> <simple-method method-name="updateFixedAssetMaint" short-description="Update an existing FixedAsset Maintenance"> <entity-one entity-name="FixedAssetMaint" value-name="lookedUpValue"/> - <field-to-result field-name="lookedUpValue.statusId" result-name="oldStatusId"/> + <set field="oldStatusId" from-field="lookedUpValue.statusId"/> + <field-to-result field-name="oldStatusId"/> <set-nonpk-fields map-name="parameters" value-name="lookedUpValue"/> <if-not-empty field="parameters.productMaintSeqId"> <entity-one entity-name="FixedAsset" value-name="fixedAsset"/> @@ -255,6 +256,47 @@ <set field="lookedUpValue.productMaintTypeId" from-field="productMaint.productMaintTypeId"/> </if-not-empty> <store-value value-name="lookedUpValue"/> + <check-errors/> + <if> + <condition> + <and> + <if-compare field="lookedUpValue.statusId" value="FAM_COMPLETED" operator="equals"/> + <if-compare-field field="oldStatusId" to-field="lookedUpValue.statusId" operator="not-equals"/> + </and> + </condition> + <then> + <set field="workEffortId" from-field="lookedUpValue.scheduleWorkEffortId"/> + <entity-one value-name="workEffort" entity-name="WorkEffort"/> + <if> + <condition> + <and> + <not><if-empty field="workEffort"/></not> + <if-empty field="workEffort.actualCompletionDate"/> + <if-compare field="workEffort.currentStatusId" value="CAL_COMPLETED" operator="not-equals"/> + </and> + </condition> + <then> + <now-timestamp-to-env env-name="nowTimestamp"/> + <set field="updateWorkEffortCtx.workEffortId" from-field="workEffortId"/> + <set field="updateWorkEffortCtx.currentStatusId" value="CAL_ACCEPTED"/> + <call-service service-name="updateWorkEffort" in-map-name="updateWorkEffortCtx"/> + <check-errors/> + <set field="updateWorkEffortCtx.currentStatusId" value="CAL_COMPLETED"/> + <set field="updateWorkEffortCtx.actualCompletionDate" from-field="nowTimestamp"/> + <call-service service-name="updateWorkEffort" in-map-name="updateWorkEffortCtx"/> + <check-errors/> + <entity-condition list-name="wepas" entity-name="WorkEffortPartyAssignment" filter-by-date="true"> + <condition-expr field-name="workEffortId" env-name="workEffortId" operator="equals"/> + </entity-condition> + <iterate list-name="wepas" entry-name="wepa"> + <set field="wepa.thruDate" from-field="nowTimestamp"/> + <store-value value-name="wepa"/> + <check-errors/> + </iterate> + </then> + </if> + </then> + </if> </simple-method> <simple-method method-name="deleteFixedAssetMaint" short-description="Delete FixedAsset Maintenance"> <entity-one entity-name="FixedAssetMaint" value-name="lookedUpValue"/> @@ -337,6 +379,80 @@ </if-compare-field> </iterate> </simple-method> + <simple-method method-name="createMaintsFromTimeInterval" short-description="Create Fixed Asset Maintenances From A Product Maint Time Interval"> + <now-timestamp-to-env env-name="nowTimestamp"/> + <entity-condition list-name="fixedAssets" entity-name="FixedAsset"> + <condition-list combine="and"> + <condition-expr field-name="instanceOfProductId" operator="not-equals" env-name="null"/> + <condition-expr field-name="actualEndOfLife" operator="equals" env-name="null"/> + </condition-list> + </entity-condition> + <iterate list-name="fixedAssets" entry-name="fixedAsset"> + <entity-condition list-name="productMaints" entity-name="ProductMaint"> + <condition-list combine="and"> + <condition-expr field-name="productId" env-name="fixedAsset.instanceOfProductId"/> + <condition-expr field-name="intervalUomId" operator="like" value="TF_%"/> + </condition-list> + </entity-condition> + <iterate list-name="productMaints" entry-name="productMaint"> + <set field="repeatCount" from-field="productMaint.repeatCount" default-value="0" type="Long"/> + <entity-condition list-name="maintList" entity-name="FixedAssetMaintWorkEffort"> + <condition-list combine="and"> + <condition-expr field-name="fixedAssetId" operator="equals" env-name="fixedAsset.fixedAssetId"/> + <condition-expr field-name="productMaintTypeId" operator="equals" env-name="productMaint.productMaintTypeId"/> + <condition-expr field-name="intervalUomId" operator="equals" env-name="productMaint.intervalUomId"/> + <condition-expr field-name="statusId" operator="not-equals" value="FAM_CANCELLED"/> + </condition-list> + <order-by field-name="maintHistSeqId"/> + </entity-condition> + <set field="intervalQuantity" from-field="productMaint.intervalQuantity" default-value="0" type="Integer"/> + <if-compare field="productMaint.intervalUomId" operator="equals" value="TF_day"> + <set-calendar field="compareDate" from-field="nowTimestamp" days="-${intervalQuantity}"/> + <else> + <if-compare field="productMaint.intervalUomId" operator="equals" value="TF_mon"> + <set-calendar field="compareDate" from-field="nowTimestamp" months="-${intervalQuantity}"/> + <else> + <if-compare field="productMaint.intervalUomId" operator="equals" value="TF_yr"> + <set-calendar field="compareDate" from-field="nowTimestamp" years="-${intervalQuantity}"/> + </if-compare> + </else> + </if-compare> + </else> + </if-compare> + <if-not-empty field="compareDate"> + <set field="listSize" value="0" type="Long"/> + <if-not-empty field="maintList"> + <set field="listSize" value="${bsh:maintList.size();}" type="Long"/> + </if-not-empty> + <set field="lastSvcLong" value="0" type="Long"/> + <set field="lastSvcDate" from-field="lastSvcLong" type="Timestamp"/> + <iterate list-name="maintList" entry-name="maintValue"> + <set field="lastSvcDate" from-field="maintValue.actualCompletionDate" set-if-null="true"/> + </iterate> + <if-not-empty field="lastSvcDate"> + <if-compare-field field="lastSvcDate" operator="less" to-field="compareDate" type="Timestamp"> + <set field="maintDue" value="false"/> + <if-compare field="repeatCount" operator="greater" value="0" type="Long"> + <if-compare-field field="listSize" operator="less" to-field="repeatCount" type="Long"> + <set field="maintDue" value="true"/> + </if-compare-field> + <else> + <set field="maintDue" value="true"/> + </else> + </if-compare> + <if-compare field="maintDue" operator="equals" value="true"> + <set-service-fields service-name="createFixedAssetMaint" to-map-name="createMaintCxt" map-name="productMaint"/> + <set field="createMaintCxt.fixedAssetId" from-field="fixedAsset.fixedAssetId"/> + <set field="createMaintCxt.statusId" value="FAM_CREATED"/> + <call-service service-name="createFixedAssetMaint" in-map-name="createMaintCxt"/> + <check-errors/> + </if-compare> + </if-compare-field> + </if-not-empty> + </if-not-empty> + </iterate> + </iterate> + </simple-method> <simple-method method-name="migrateFixedAssetMaintMeter" short-description="Copy FixedAssetMaintMeter To FixedAssetMeter"> <entity-condition list-name="maintMeterList" entity-name="FixedAssetMaintMeter"/> <iterate list-name="maintMeterList" entry-name="maintMeter"> Modified: ofbiz/trunk/applications/accounting/servicedef/services_fixedasset.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/servicedef/services_fixedasset.xml?rev=683418&r1=683417&r2=683418&view=diff ============================================================================== --- ofbiz/trunk/applications/accounting/servicedef/services_fixedasset.xml (original) +++ ofbiz/trunk/applications/accounting/servicedef/services_fixedasset.xml Wed Aug 6 14:22:29 2008 @@ -168,6 +168,13 @@ <permission-service service-name="fixedAssetPermissionCheck" main-action="DELETE"/> <auto-attributes include="pk" mode="IN" optional="false"/> </service> + <service name="createMaintsFromTimeInterval" engine="simple" use-transaction="false" + location="org/ofbiz/accounting/fixedasset/FixedAssetServices.xml" invoke="createMaintsFromTimeInterval" auth="true"> + <description>Create Fixed Asset Maintenances from ProductMaint time intervals. Currently works + with day, month, and year interval types. This service is intended to be run as a regularly + scheduled job.</description> + <permission-service service-name="fixedAssetPermissionCheck" main-action="CREATE"/> + </service> <!-- FixedAsset Maintenance Meter Create/Update/Delete--> <service name="createFixedAssetMeter" default-entity-name="FixedAssetMeter" engine="simple" location="org/ofbiz/accounting/fixedasset/FixedAssetServices.xml" invoke="createFixedAssetMeter" auth="true"> |
Free forum by Nabble | Edit this page |