|
Author: hansbak
Date: Thu Feb 4 06:01:06 2010 New Revision: 906373 URL: http://svn.apache.org/viewvc?rev=906373&view=rev Log: Ebaystore component update: - update code and format in java file - function update status of product(active,sold,unsold) from ebay inventory - function and screen for cancel quantities that reservation Modified: ofbiz/trunk/.classpath ofbiz/trunk/LICENSE ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryReserveServices.xml ofbiz/trunk/specialpurpose/ebaystore/config/EbayStoreUiLabels.xml ofbiz/trunk/specialpurpose/ebaystore/ofbiz-component.xml ofbiz/trunk/specialpurpose/ebaystore/script/org/ofbiz/ebaystore/EbayServices.xml ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStore.java ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreInventoryServices.java ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/controller.xml ofbiz/trunk/specialpurpose/ebaystore/widget/EbayInventoryForms.xml ofbiz/trunk/specialpurpose/ebaystore/widget/EbayStoreScreens.xml Modified: ofbiz/trunk/.classpath URL: http://svn.apache.org/viewvc/ofbiz/trunk/.classpath?rev=906373&r1=906372&r2=906373&view=diff ============================================================================== --- ofbiz/trunk/.classpath (original) +++ ofbiz/trunk/.classpath Thu Feb 4 06:01:06 2010 @@ -227,6 +227,7 @@ <classpathentry kind="src" path="framework/widget/src"/> <classpathentry kind="src" path="specialpurpose/assetmaint/src"/> <classpathentry kind="src" path="specialpurpose/ebay/src"/> + <classpathentry kind="src" path="specialpurpose/ebaystore/src"/> <classpathentry kind="src" path="specialpurpose/ecommerce/src"/> <classpathentry kind="src" path="specialpurpose/googlebase/src"/> <classpathentry kind="src" path="specialpurpose/googlecheckout/src"/> Modified: ofbiz/trunk/LICENSE URL: http://svn.apache.org/viewvc/ofbiz/trunk/LICENSE?rev=906373&r1=906372&r2=906373&view=diff ============================================================================== --- ofbiz/trunk/LICENSE (original) +++ ofbiz/trunk/LICENSE Thu Feb 4 06:01:06 2010 @@ -1990,10 +1990,10 @@ COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL): ofbiz/trunk/framework/base/lib/juel-2.1.1.jar (contains the javax.el package) ofbiz/trunk/framework/base/lib/mail.jar -ofbiz/trunk/specialpurpose/ebay/lib/attributes.jar -ofbiz/trunk/specialpurpose/ebay/lib/ebaysdkcore.jar -ofbiz/trunk/specialpurpose/ebay/lib/helper.jar -ofbiz/trunk/specialpurpose/ebay/lib/ebaycalls.jar +ofbiz/trunk/specialpurpose/ebaystore/lib/attributes.jar +ofbiz/trunk/specialpurpose/ebaystore/lib/ebaysdkcore.jar +ofbiz/trunk/specialpurpose/ebaystore/lib/helper.jar +ofbiz/trunk/specialpurpose/ebaystore/lib/ebaycalls.jar ========================================================================= COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 1. Modified: ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryReserveServices.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryReserveServices.xml?rev=906373&r1=906372&r2=906373&view=diff ============================================================================== --- ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryReserveServices.xml (original) +++ ofbiz/trunk/applications/product/script/org/ofbiz/product/inventory/InventoryReserveServices.xml Thu Feb 4 06:01:06 2010 @@ -166,6 +166,8 @@ <calculate field="createDetailMap.availableToPromiseDiff"> <calcop field="parameters.quantityNotReserved" operator="negative"/> </calculate> + + <if-not-empty field="parameters.reserveReasonEnumId"><set from-field="parameters.reserveReasonEnumId" field="createDetailMap.reasonEnumId"/></if-not-empty> <call-service service-name="createInventoryItemDetail" in-map-name="createDetailMap"/> <clear-field field="createDetailMap"/> @@ -233,6 +235,7 @@ <calculate field="createDetailMap.availableToPromiseDiff"> <calcop field="parameters.quantityNotReserved" operator="negative"/> </calculate> + <if-not-empty field="parameters.reserveReasonEnumId"><set from-field="parameters.reserveReasonEnumId" field="createDetailMap.reasonEnumId"/></if-not-empty> <call-service service-name="createInventoryItemDetail" in-map-name="createDetailMap"/> <clear-field field="createDetailMap"/> @@ -410,6 +413,12 @@ </if-compare> </if-compare> <if-compare field="inventoryItem.inventoryItemTypeId" operator="equals" value="NON_SERIAL_INV_ITEM"> + <!-- check reasonenumId reserve for ebay inventory --> + <if-not-empty field="parameters.reserveReasonEnumId"> + <if-compare field="parameters.reserveReasonEnumId" value="EBAY_INV_RES" operator="equals"> + <set field="ebayReserveReasonEnumId" from-field="parameters.reserveReasonEnumId"/> + </if-compare> + </if-not-empty> <!-- reduce atp on inventoryItem if availableToPromise greater than 0, if not the code at the end of this method will handle it --> <if> <condition> @@ -435,26 +444,28 @@ <calculate field="createDetailMap.availableToPromiseDiff"> <calcop field="parameters.deductAmount" operator="negative"/> </calculate> + <if-not-empty field="ebayReserveReasonEnumId"><set from-field="parameters.reserveReasonEnumId" field="createDetailMap.reasonEnumId"/></if-not-empty> <call-service service-name="createInventoryItemDetail" in-map-name="createDetailMap"/> <clear-field field="createDetailMap"/> - <!-- create OrderItemShipGrpInvRes record --> - <call-simple-method method-name="getPromisedDateTime"/> - <set from-field="parameters.orderId" field="reserveOisgirMap.orderId"/> - <set from-field="parameters.orderItemSeqId" field="reserveOisgirMap.orderItemSeqId"/> - <set from-field="parameters.shipGroupSeqId" field="reserveOisgirMap.shipGroupSeqId"/> - <set from-field="inventoryItem.inventoryItemId" field="reserveOisgirMap.inventoryItemId"/> - <set from-field="parameters.reserveOrderEnumId" field="reserveOisgirMap.reserveOrderEnumId"/> - <set from-field="parameters.reservedDatetime" field="reserveOisgirMap.reservedDatetime"/> - <set from-field="parameters.deductAmount" field="reserveOisgirMap.quantity" type="BigDecimal"/> - <set from-field="promisedDatetime" field="reserveOisgirMap.promisedDatetime"/> - <set from-field="parameters.priority" field="reserveOisgirMap.priority"/> - <if-not-empty field="parameters.sequenceId"> - <set field="reserveOisgirMap.sequenceId" from-field="parameters.sequenceId"/> - </if-not-empty> - <call-service service-name="reserveOrderItemInventory" in-map-name="reserveOisgirMap"/> - <clear-field field="reserveOisgirMap"/> - + <!-- create OrderItemShipGrpInvRes record and check for reserved from ebay don't need shipgroup--> + <if-empty field="ebayReserveReasonEnumId"> + <call-simple-method method-name="getPromisedDateTime"/> + <set from-field="parameters.orderId" field="reserveOisgirMap.orderId"/> + <set from-field="parameters.orderItemSeqId" field="reserveOisgirMap.orderItemSeqId"/> + <set from-field="parameters.shipGroupSeqId" field="reserveOisgirMap.shipGroupSeqId"/> + <set from-field="inventoryItem.inventoryItemId" field="reserveOisgirMap.inventoryItemId"/> + <set from-field="parameters.reserveOrderEnumId" field="reserveOisgirMap.reserveOrderEnumId"/> + <set from-field="parameters.reservedDatetime" field="reserveOisgirMap.reservedDatetime"/> + <set from-field="parameters.deductAmount" field="reserveOisgirMap.quantity" type="BigDecimal"/> + <set from-field="promisedDatetime" field="reserveOisgirMap.promisedDatetime"/> + <set from-field="parameters.priority" field="reserveOisgirMap.priority"/> + <if-not-empty field="parameters.sequenceId"> + <set field="reserveOisgirMap.sequenceId" from-field="parameters.sequenceId"/> + </if-not-empty> + <call-service service-name="reserveOrderItemInventory" in-map-name="reserveOisgirMap"/> + <clear-field field="reserveOisgirMap"/> + </if-empty> <calculate field="parameters.quantityNotReserved"> <calcop operator="subtract" field="parameters.quantityNotReserved"> <calcop operator="get" field="parameters.deductAmount"/> Modified: ofbiz/trunk/specialpurpose/ebaystore/config/EbayStoreUiLabels.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/config/EbayStoreUiLabels.xml?rev=906373&r1=906372&r2=906373&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ebaystore/config/EbayStoreUiLabels.xml (original) +++ ofbiz/trunk/specialpurpose/ebaystore/config/EbayStoreUiLabels.xml Thu Feb 4 06:01:06 2010 @@ -183,4 +183,7 @@ <property key="EbayUpdateInventory"> <value xml:lang="en">Update To Ebay Inventory</value> </property> + <property key="EbayUpdateInventoryStatus"> + <value xml:lang="en">Update Inventory Status</value> + </property> </resource> Modified: ofbiz/trunk/specialpurpose/ebaystore/ofbiz-component.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/ofbiz-component.xml?rev=906373&r1=906372&r2=906373&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ebaystore/ofbiz-component.xml (original) +++ ofbiz/trunk/specialpurpose/ebaystore/ofbiz-component.xml Thu Feb 4 06:01:06 2010 @@ -23,6 +23,7 @@ xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-component.xsd"> <resource-loader name="main" type="component"/> <classpath type="dir" location="config"/> + <classpath type="jar" location="lib/*"/> <classpath type="jar" location="build/lib/*"/> <entity-resource type="model" reader-name="main" loader="main" location="entitydef/entitymodel.xml"/> Modified: ofbiz/trunk/specialpurpose/ebaystore/script/org/ofbiz/ebaystore/EbayServices.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/script/org/ofbiz/ebaystore/EbayServices.xml?rev=906373&r1=906372&r2=906373&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ebaystore/script/org/ofbiz/ebaystore/EbayServices.xml (original) +++ ofbiz/trunk/specialpurpose/ebaystore/script/org/ofbiz/ebaystore/EbayServices.xml Thu Feb 4 06:01:06 2010 @@ -43,8 +43,8 @@ </simple-method> - <!-- Store Inventory Services --> - <simple-method method-name="reserveEbayStoreInventory" short-description="Reserve ofbiz Store product Inventory"> + <!-- ebay Store Inventory Services --> + <simple-method method-name="reserveEbayProductInventory" short-description="Reserve product from ofbiz Store Inventory"> <entity-one entity-name="Product" value-field="product" use-cache="true"/> <entity-one entity-name="ProductStore" value-field="productStore" > <field-map field-name="productStoreId" from-field="parameters.productStoreId"/> @@ -62,7 +62,13 @@ <return response-code="success"/> </if-compare> - <call-simple-method method-name="isStoreInventoryRequiredInline"/> + <set from-field="product.requireInventory" field="requireInventory"/> + <if-empty field="requireInventory"> + <set from-field="productStore.requireInventory" field="requireInventory"/> + </if-empty> + <if-empty field="requireInventory"> + <set value="Y" field="requireInventory"/> + </if-empty> <set from-field="parameters.facilityId" field="facilityId"/> <if-not-empty field="facilityId"> @@ -94,11 +100,13 @@ <set from-field="facilityId" field="callServiceMap.facilityId"/> <set from-field="requireInventory" field="callServiceMap.requireInventory"/> <set from-field="productStore.reserveOrderEnumId" field="callServiceMap.reserveOrderEnumId"/> + <set value="EBAY_INV_RES" field="callServiceMap.reserveReasonEnumId"/> <call-service service-name="reserveEbayProductInventoryByStoreFacility" in-map-name="callServiceMap"> <results-to-map map-name="resultMap"/> <result-to-field result-name="quantityNotReserved" field="qtyNotReserve"/> <result-to-field result-name="successMessage" field="returnSuccessMessage"/> </call-service> + <set field="defaultReserve" default-value="0"/> <!-- if quantityNotReserved greater than 0 then ATP in ofbiz stock not have, it should be return message or log warring--> <if-compare-field field="qtyNotReserve" operator="equals" type="BigDecimal" to-field="defaultReserve"> @@ -174,281 +182,145 @@ </else> </if-empty> </simple-method> - - <simple-method method-name="isStoreInventoryRequiredInline" short-description="Is Store Inventory Required" login-required="false"> - <set from-field="product.requireInventory" field="requireInventory"/> - <if-empty field="requireInventory"> - <set from-field="productStore.requireInventory" field="requireInventory"/> - </if-empty> - <if-empty field="requireInventory"> - <set value="Y" field="requireInventory"/> + <simple-method method-name="updateEbayProductQtyReserved" short-description="Update or cancel an Product which are reserved quantity from inventory"> + <entity-one entity-name="EbayProductStoreInventory" value-field="ebayProductStoreInventory"> + <field-map field-name="productStoreId" from-field="parameters.productStoreId"/> + <field-map field-name="facilityId" from-field="parameters.facilityId"/> + <field-map field-name="productId" from-field="parameters.productId"/> + </entity-one> + <if-empty field="ebayProductStoreInventory"> + <add-error><fail-message message="No Product found with id ${parameters.productId}."/></add-error> + <check-errors/> </if-empty> - </simple-method> - - <simple-method method-name="reserveEbayProductInventory" short-description="Reserve Inventory for a Product"> - - <now-timestamp field="nowTimestamp"/> - - <!-- check the product; make sure its a physical item --> - <entity-one entity-name="Product" value-field="product"/> - <entity-one entity-name="Facility" value-field="facility" use-cache="true"/> - <get-related-one value-field="product" relation-name="ProductType" to-value-field="productType"/> - <if-compare field="productType.isPhysical" operator="equals" value="N"> - <set field="parameters.quantityNotReserved" value="0" type="BigDecimal"/> + <set field="actionType" from-field="parameters.actionType"/> + <set field="qtyInp" default-value="0" from-field="parameters.quantity"/> + <set field="atpListing" default-value="0" from-field="ebayProductStoreInventory.availableToPromiseListing"/> + <set field="qohReserved" default-value="0" from-field="ebayProductStoreInventory.quantityReserved"/> + <!--check qty input for increase or decrease --> + <!--field-to-result field="parameters.productStoreId" result-name="productStoreId"/> + <field-to-result field="parameters.facilityId" result-name="facilityId"/> + <field-to-result field="parameters.productId" result-name="productId"/--> + <if-compare field="actionType" value="ADD" operator="equals"> + <set-service-fields service-name="reserveEbayProductInventory" map="parameters" to-map="reservedEbayProduct"/> + <call-service service-name="reserveEbayProductInventory" in-map-name="reservedEbayProduct"></call-service> + <return/> <else> - - <set value="EBAY_INV_RES" field="parameters.reserveReasonEnumId"/> - <set value="+datetimeReceived" field="orderByString"/> - <set from-field="parameters.quantity" field="parameters.quantityNotReserved"/> - - <!-- first reserve against InventoryItems in FLT_PICKLOC type locations, then FLT_BULK locations, then InventoryItems with no locations --> - <entity-condition entity-name="InventoryItemAndLocation" list="inventoryItemAndLocations"> - <condition-list combine="and"> - <condition-expr field-name="productId" from-field="parameters.productId"/> - <condition-expr field-name="facilityId" from-field="parameters.facilityId" ignore-if-empty="true" ignore-if-null="true"/> - <condition-expr field-name="containerId" from-field="parameters.containerId" ignore-if-empty="true" ignore-if-null="true"/> - <condition-expr field-name="quantityOnHandTotal" operator="greater" value="0.0"/> - <condition-expr field-name="locationTypeEnumId" operator="equals" value="FLT_PICKLOC"/> - </condition-list> - <order-by field-name="${orderByString}"/> - </entity-condition> - <iterate entry="inventoryItemAndLocation" list="inventoryItemAndLocations"> - <if-compare field="parameters.quantityNotReserved" operator="greater" value="0" type="Double"> - <!-- this is a little trick to get the InventoryItem value object without doing a query, possible since all fields on InventoryItem are also on InventoryItemAndLocation with the same names --> - <make-value entity-name="InventoryItem" map="inventoryItemAndLocation" value-field="inventoryItem"/> - <call-simple-method method-name="reserveForInventoryItemInline"/> - </if-compare> - </iterate> - <!-- still some left? try the FLT_BULK locations --> - <if-compare field="parameters.quantityNotReserved" operator="greater" value="0" type="BigDecimal"> - <entity-condition entity-name="InventoryItemAndLocation" list="inventoryItemAndLocations"> - <condition-list combine="and"> - <condition-expr field-name="productId" from-field="parameters.productId"/> - <condition-expr field-name="facilityId" from-field="parameters.facilityId" ignore-if-empty="true" ignore-if-null="true"/> - <condition-expr field-name="containerId" from-field="parameters.containerId" ignore-if-empty="true" ignore-if-null="true"/> - <condition-expr field-name="quantityOnHandTotal" operator="greater" value="0.0"/> - <condition-expr field-name="locationTypeEnumId" operator="equals" value="FLT_BULK"/> - </condition-list> - <order-by field-name="${orderByString}"/> - </entity-condition> - <iterate entry="inventoryItemAndLocation" list="inventoryItemAndLocations"> - <if-compare field="parameters.quantityNotReserved" operator="greater" value="0" type="Double"> - <!-- this is a little trick to get the InventoryItem value object without doing a query, possible since all fields on InventoryItem are also on InventoryItemAndLocation with the same names --> - <make-value entity-name="InventoryItem" map="inventoryItemAndLocation" value-field="inventoryItem"/> - <call-simple-method method-name="reserveForInventoryItemInline"/> - </if-compare> - </iterate> - </if-compare> - - <!-- last of all try reserving in InventoryItems that have no locationSeqId, ie are not in any particular location --> - <if-compare field="parameters.quantityNotReserved" operator="greater" value="0" type="BigDecimal"> - <entity-condition entity-name="InventoryItem" list="inventoryItems"> - <condition-list combine="and"> - <condition-expr field-name="productId" from-field="parameters.productId"/> - <condition-expr field-name="facilityId" from-field="parameters.facilityId" ignore-if-empty="true" ignore-if-null="true"/> - <condition-expr field-name="containerId" from-field="parameters.containerId" ignore-if-empty="true" ignore-if-null="true"/> - <condition-expr field-name="quantityOnHandTotal" operator="greater" value="0.0"/> - <condition-expr field-name="locationSeqId" operator="equals" from-field="nullField"/> - </condition-list> - <order-by field-name="${orderByString}"/> - </entity-condition> - <iterate entry="inventoryItem" list="inventoryItems"> - <if> - <condition> - <and> - <if-compare field="parameters.quantityNotReserved" operator="greater" value="0" type="Double"/> - <if-empty field="inventoryItem.locationSeqId"/> - </and> - </condition> - <then> - <call-simple-method method-name="reserveForInventoryItemInline"/> - </then> - </if> - </iterate> - </if-compare> - <!-- - if inventory is not required for purchase and quantityNotReserved != 0: - - subtract the remaining quantityNotReserved from the availableToPromise of the last non-serialized inventory item - - or if none was found create a non-ser InventoryItem with availableToPromise = -quantityNotReserved - --> - <if-compare field="parameters.quantityNotReserved" operator="not-equals" value="0" type="BigDecimal"> - <if-compare field="parameters.requireInventory" operator="equals" value="Y"> - <!-- use this else pattern to accomplish the anything but Y logic, ie if not specified default to inventory NOT required --> + <!-- calculate for qty is used to create listing already, can not remove that qty until list is end or cancel listing--> + <calculate field="qtyToUsed" type="BigDecimal" > + <calcop operator="add"> + <calcop operator="get" field="qohReserved"/> + <calcop operator="negative" field="atpListing"/> + </calcop> + </calculate> + <calculate field="qtyCanRemv" type="BigDecimal" > + <calcop operator="add"> + <calcop operator="get" field="qohReserved"/> + <calcop operator="negative" field="qtyToUsed"/> + </calcop> + </calculate> + <if-compare field="qtyCanRemv" operator="greater" value="0"> + <!-- auto remove only real qtys that we can remove then return quantity are remove to stock follow productStore, facility and productId --> + <set field="qtyToRemove" type="BigDecimal" default-value="0" value="${qtyInp}"/> + <if-compare field="qtyCanRemv" value="${qtyToRemove}" operator="greater-equals"> + <call-simple-method method-name="removeEbayProductQtyReserved"/> + <log level="info" message="(${qtyToRemove}) product quantity was cancel from inventory with this transaction"></log> <else> - <if-not-empty field="lastNonSerInventoryItem"> - <!-- subtract from quantityNotReserved from the availableToPromise of existing inventory item --> - <!-- instead of updating InventoryItem, add an InventoryItemDetail --> - <set from-field="lastNonSerInventoryItem.inventoryItemId" field="createDetailMap.inventoryItemId"/> - <set from-field="parameters.reserveReasonEnumId" field="createDetailMap.reasonEnumId"/> - <calculate field="createDetailMap.availableToPromiseDiff"> - <calcop field="parameters.quantityNotReserved" operator="negative"/> - </calculate> - <call-service service-name="createInventoryItemDetail" in-map-name="createDetailMap"/> - <clear-field field="createDetailMap"/> - - <!-- get the promiseDatetime --> - <get-related-one value-field="lastNonSerInventoryItem" relation-name="ProductFacility" to-value-field="productFacility"/> - <clear-field field="daysToShip"/> - <set field="daysToShip" from-field="productFacility.daysToShip"/> - <if-empty field="daysToShip"> - <!-- if the product does not have its own days to ship, use Facility.defaultDaysToShip, if not then use 30 days as a USA industry default --> - <if-not-empty field="facility.defaultDaysToShip"> - <set field="daysToShip" from-field="facility.defaultDaysToShip" type="Long"/> - <else> - <set field="daysToShip" value="30" type="Long"/> - </else> - </if-not-empty> - </if-empty> - <!-- TODO: Convert this to a <set-calendar> operation --> - <call-bsh><![CDATA[ - java.sql.Timestamp orderDate = orderHeader.getTimestamp("orderDate"); - com.ibm.icu.util.Calendar cal = com.ibm.icu.util.Calendar.getInstance(); - cal.setTimeInMillis(orderDate.getTime()); - cal.add(com.ibm.icu.util.Calendar.DAY_OF_YEAR, daysToShip.intValue()); - return org.ofbiz.base.util.UtilMisc.toMap("promisedDatetime", new java.sql.Timestamp(cal.getTimeInMillis())); - ]]></call-bsh> - - <else> - <!-- no non-ser inv item, create a non-ser InventoryItem with availableToPromise = -quantityNotReserved --> - <clear-field field="createInventoryItemInMap"/> - <clear-field field="createInventoryItemOutMap"/> - <!-- the createInventoryItem service is run by the the system user here --> - <entity-one entity-name="UserLogin" value-field="permUserLogin"> - <field-map field-name="userLoginId" value="system"/> - </entity-one> - <set from-field="parameters.productId" field="createInventoryItemInMap.productId"/> - <set from-field="parameters.facilityId" field="createInventoryItemInMap.facilityId"/> - <set from-field="parameters.containerId" field="createInventoryItemInMap.containerId"/> - <set value="NON_SERIAL_INV_ITEM" field="createInventoryItemInMap.inventoryItemTypeId"/> - <set from-field="permUserLogin" field="createInventoryItemInMap.userLogin"/> - <call-service service-name="createInventoryItem" in-map-name="createInventoryItemInMap" include-user-login="false"> - <result-to-field result-name="inventoryItemId" field="createInventoryItemOutMap.inventoryItemId"/> - </call-service> - <entity-one entity-name="InventoryItem" value-field="newNonSerInventoryItem"> - <field-map field-name="inventoryItemId" from-field="createInventoryItemOutMap.inventoryItemId"/> - </entity-one> - - <!-- also create a detail record with the quantities --> - <set from-field="newNonSerInventoryItem.inventoryItemId" field="createDetailMap.inventoryItemId"/> - <set from-field="parameters.reserveReasonEnumId" field="createDetailMap.reasonEnumId"/> - <calculate field="createDetailMap.availableToPromiseDiff"> - <calcop field="parameters.quantityNotReserved" operator="negative"/> - </calculate> - <call-service service-name="createInventoryItemDetail" in-map-name="createDetailMap"/> - <clear-field field="createDetailMap"/> - - <!-- get the promiseDatetime --> - <get-related-one value-field="newNonSerInventoryItem" relation-name="ProductFacility" to-value-field="productFacility"/> - <clear-field field="daysToShip"/> - <set field="daysToShip" from-field="productFacility.daysToShip"/> - <if-empty field="daysToShip"> - <!-- if the product does not have its own days to ship, use Facility.defaultDaysToShip, if not then use 30 days as a USA industry default --> - <if-not-empty field="facility.defaultDaysToShip"> - <set field="daysToShip" from-field="facility.defaultDaysToShip" type="Long"/> - <else> - <set field="daysToShip" value="30" type="Long"/> - </else> - </if-not-empty> - </if-empty> - <!-- TODO: Convert this to a <set-calendar> operation --> - <call-bsh><![CDATA[ - java.sql.Timestamp orderDate = orderHeader.getTimestamp("orderDate"); - com.ibm.icu.util.Calendar cal = com.ibm.icu.util.Calendar.getInstance(); - cal.setTimeInMillis(orderDate.getTime()); - cal.add(com.ibm.icu.util.Calendar.DAY_OF_YEAR, daysToShip.intValue()); - return org.ofbiz.base.util.UtilMisc.toMap("promisedDatetime", new java.sql.Timestamp(cal.getTimeInMillis())); - ]]></call-bsh> - - </else> - </if-not-empty> - - <set field="parameters.quantityNotReserved" value="0" type="BigDecimal"/> + <!-- calculate for over qty want to remove --> + <calculate field="qtyOverRemv" type="BigDecimal" > + <calcop operator="add"> + <calcop operator="get" field="qtyToRemove"/> + <calcop operator="negative" field="qtyCanRemv"/> + </calcop> + </calculate> + <set field="qtyToRemove" type="BigDecimal" default-value="0" from-field="qtyCanRemv"/> + <call-simple-method method-name="removeEbayProductQtyReserved"/> + <set field="successMessage" value="${returnSuccessMessage} (${qtyToRemove}) product qty was canceled from this transaction and (${qtyOverRemv}) was fail because you reserved in inventory only ${qtyToRemove}. "/> + <field-to-result field="successMessage"/> </else> </if-compare> - </if-compare> - </else> - </if-compare> - - <field-to-result field="parameters.quantityNotReserved" result-name="quantityNotReserved"/> - </simple-method> - - <simple-method method-name="reserveForInventoryItemInline" short-description="Does a reservation for one InventoryItem, meant to be called in-line"> - <!-- only do something with this inventoryItem if there is more inventory to reserve --> - <if-compare field="parameters.quantityNotReserved" operator="greater" value="0" type="BigDecimal"> - - <if-compare value="SERIALIZED_INV_ITEM" operator="equals" field="inventoryItem.inventoryItemTypeId"> - <if-compare value="INV_AVAILABLE" operator="equals" field="inventoryItem.statusId"> - <!-- change status on inventoryItem --> - <set value="INV_PROMISED" field="inventoryItem.statusId"/> - <store-value value-field="inventoryItem"/> - - <clear-field field="reserveOisgirMap"/> - - <calculate field="parameters.quantityNotReserved"> - <calcop field="parameters.quantityNotReserved" operator="subtract"><number value="1.0"/></calcop> + <!-- update values in EbayProductStoreInventory --> + <calculate field="ebayProductStoreInventory.quantityReserved" type="BigDecimal" > + <calcop operator="add"> + <calcop operator="get" field="qohReserved"/> + <calcop operator="negative" field="qtyToRemove"/> + </calcop> </calculate> + <calculate field="ebayProductStoreInventory.availableToPromiseListing" type="BigDecimal" > + <calcop operator="add"> + <calcop operator="get" field="atpListing"/> + <calcop operator="negative" field="qtyToRemove"/> + </calcop> + </calculate> + <store-value value-field="ebayProductStoreInventory"/> + <else> + <add-error><fail-message message="can not decrease quantity of product ${parameters.productId} because it already to used created listing."/></add-error> + <return/> + </else> </if-compare> - </if-compare> - <if-compare field="inventoryItem.inventoryItemTypeId" operator="equals" value="NON_SERIAL_INV_ITEM"> - <!-- reduce atp on inventoryItem if availableToPromise greater than 0, if not the code at the end of this method will handle it --> - <if> - <condition> - <and> - <if-compare field="inventoryItem.statusId" operator="not-equals" value="ON_HOLD_NS"/> - <if-compare field="inventoryItem.statusId" operator="not-equals" value="DEFECTIVE_NS"/> - <not><if-empty field="inventoryItem.availableToPromiseTotal"/></not> - <if-compare field="inventoryItem.availableToPromiseTotal" operator="greater" value="0" type="BigDecimal"/> - </and> - </condition> - <then> - <if-compare-field field="parameters.quantityNotReserved" to-field="inventoryItem.availableToPromiseTotal" operator="greater" type="BigDecimal"> - <set from-field="inventoryItem.availableToPromiseTotal" field="parameters.deductAmount"/> - <else> - <set from-field="parameters.quantityNotReserved" field="parameters.deductAmount"/> - </else> - </if-compare-field> - - <!-- instead of updating InventoryItem, add an InventoryItemDetail --> - <set from-field="inventoryItem.inventoryItemId" field="createDetailMap.inventoryItemId"/> - <set from-field="parameters.reserveReasonEnumId" field="createDetailMap.reasonEnumId"/> - <calculate field="createDetailMap.availableToPromiseDiff"> - <calcop field="parameters.deductAmount" operator="negative"/> - </calculate> - <call-service service-name="createInventoryItemDetail" in-map-name="createDetailMap"/> - <clear-field field="createDetailMap"/> - - <calculate field="parameters.quantityNotReserved"> - <calcop operator="subtract" field="parameters.quantityNotReserved"> - <calcop operator="get" field="parameters.deductAmount"/> - </calcop> - </calculate> - </then> - </if> - <!-- keep track of the last non-serialized inventory item for use if inventory is not required for purchase --> - <!-- use env variable named lastNonSerInventoryItem --> - <set from-field="inventoryItem" field="lastNonSerInventoryItem"/> - </if-compare> + </else> </if-compare> </simple-method> - <simple-method method-name="getPromisedDateTime" short-description="Get Inventory Promised Date/Time"> - <!-- get the promiseDatetime --> - <get-related-one value-field="inventoryItem" relation-name="ProductFacility" to-value-field="productFacility"/> - <set field="daysToShip" from-field="productFacility.daysToShip"/> - <if-empty field="daysToShip"> - <!-- if the product does not have its own days to ship, use Facility.defaultDaysToShip, if not then use 30 days as a USA industry default --> - <set field="daysToShip" from-field="facility.defaultDaysToShip" type="Long"/> - </if-empty> - <if-empty field="daysToShip"> - <set field="daysToShip" value="30" type="Long"/> - </if-empty> - <!-- TODO: Convert this to a <set-calendar> operation --> - <call-bsh><![CDATA[ - java.sql.Timestamp orderDate = orderHeader.getTimestamp("orderDate"); - com.ibm.icu.util.Calendar cal = com.ibm.icu.util.Calendar.getInstance(); - cal.setTimeInMillis(orderDate.getTime()); - cal.add(com.ibm.icu.util.Calendar.DAY_OF_YEAR, daysToShip.intValue()); - return org.ofbiz.base.util.UtilMisc.toMap("promisedDatetime", new java.sql.Timestamp(cal.getTimeInMillis())); - ]]></call-bsh> + <simple-method method-name="removeEbayProductQtyReserved" short-description="remove reserved product qty and return quantity to inventory"> + <!--for InventoryItems that have no locationSeqId --> + <set value="+datetimeReceived" field="orderByString"/> + <entity-condition entity-name="InventoryItem" list="inventoryItems"> + <condition-list combine="and"> + <condition-expr field-name="productId" from-field="parameters.productId"/> + <condition-expr field-name="facilityId" from-field="parameters.facilityId"/> + <condition-expr field-name="containerId" from-field="parameters.containerId" ignore-if-empty="true" ignore-if-null="true"/> + <condition-expr field-name="quantityOnHandTotal" operator="greater" value="0.0"/> + <condition-expr field-name="locationSeqId" operator="equals" from-field="nullField"/> + </condition-list> + <order-by field-name="${orderByString}"/> + </entity-condition> + <set field="qtyless" type="BigDecimal" default-value="0" from-field="qtyToRemove"/> + <iterate entry="inventoryItem" list="inventoryItems"> + <if> + <condition> + <and> + <if-empty field="inventoryItem.locationSeqId"/> + </and> + </condition> + <then> + <get-related value-field="inventoryItem" relation-name="InventoryItemDetail" list="inventoryItemDetails"/> + <if-not-empty field="inventoryItemDetails"> + <iterate entry="inventoryItemDetail" list="inventoryItemDetails"> + <if> + <condition> + <and> + <if-compare field="inventoryItemDetail.reasonEnumId" value="EBAY_INV_RES" operator="equals"></if-compare> + <if-empty field="inventoryItemDetail.orderId"></if-empty> + <if-empty field="inventoryItemDetail.orderItemSeqId"></if-empty> + <if-compare field="inventoryItemDetail.availableToPromiseDiff" value="0" operator="not-equals"></if-compare> + </and> + </condition> + <then> + <if-compare field="qtyless" value="0" operator="greater"> + <calculate field="qtyResult" type="BigDecimal" > + <calcop operator="add"> + <calcop operator="get" field="inventoryItemDetail.availableToPromiseDiff"/> + <calcop operator="get" field="${qtyless}"/> + </calcop> + </calculate> + <if-compare field="qtyResult" value="0" operator="greater-equals"> + <remove-value value-field="inventoryItemDetail"/> + <else> + <set field="inventoryItemDetail.availableToPromiseDiff" type="BigDecimal" from-field="qtyResult"/> + <store-value value-field="inventoryItemDetail"/> + </else> + </if-compare> + <set field="qtyless" type="BigDecimal" value="${qtyResult}"/> + <else> + <return/> + </else> + </if-compare> + </then> + </if> + </iterate> + </if-not-empty> + </then> + </if> + </iterate> </simple-method> </simple-methods> \ No newline at end of file Modified: ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml?rev=906373&r1=906372&r2=906373&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml (original) +++ ofbiz/trunk/specialpurpose/ebaystore/servicedef/services.xml Thu Feb 4 06:01:06 2010 @@ -103,7 +103,7 @@ <attribute name="storeDescFontSize" mode="IN" type="String" optional="true"/> <attribute name="storeDescFontColor" mode="IN" type="String" optional="true"/> <attribute name="storeCustomHeaderLayout" mode="IN" type="String" optional="false"/> - <attribute name="storeCustomHeader" mode="IN" type="String" optional="false"/> + <attribute name="storeCustomHeader" mode="IN" type="String" allow-html="any" optional="true"/> <attribute name="storeHeaderStyle" mode="IN" type="String" optional="false"/> <attribute name="storeItemLayout" mode="IN" type="String" optional="false"/> <attribute name="storeItemSortOrder" mode="IN" type="String" optional="false"/> @@ -189,8 +189,8 @@ <attribute name="itemBlocked" type="Map" mode="OUT" optional="true"/> </service> <!-- ebay inventory --> - <service name="reserveEbayStoreInventory" engine="simple" - location="component://ebaystore/script/org/ofbiz/ebaystore/EbayServices.xml" invoke="reserveEbayStoreInventory"> + <service name="reserveEbayProductInventory" engine="simple" + location="component://ebaystore/script/org/ofbiz/ebaystore/EbayServices.xml" invoke="reserveEbayProductInventory"> <description>Reserve Inventory in a Product Store</description> <attribute name="productStoreId" type="String" mode="IN" optional="false"></attribute> <attribute name="productId" type="String" mode="IN" optional="false"></attribute> @@ -199,18 +199,23 @@ <attribute name="quantityNotReserved" type="BigDecimal" mode="OUT" optional="false"></attribute> </service> <service name="reserveEbayProductInventoryByStoreFacility" engine="simple" - location="component://ebaystore/script/org/ofbiz/ebaystore/EbayServices.xml" invoke="reserveEbayProductInventory" auth="true"> - <description>Reserve Inventory for a Product By Facility + location="component://product/script/org/ofbiz/product/inventory/InventoryReserveServices.xml" invoke="reserveProductInventory" auth="true"> + <description>Reserve product for ebay Inventory and make reserve for a Product By Facility If requireInventory is Y the quantity not reserved is returned, if N then a negative availableToPromise will be used to track quantity ordered beyond what is in stock. </description> <attribute name="productId" type="String" mode="IN" optional="false"/> <attribute name="facilityId" type="String" mode="IN" optional="false"/> + <attribute name="orderId" type="String" mode="IN" optional="true"/> + <attribute name="orderItemSeqId" type="String" mode="IN" optional="true"/> + <attribute name="shipGroupSeqId" type="String" mode="IN" optional="true"/> <attribute name="quantity" type="BigDecimal" mode="IN" optional="false"/> <attribute name="reservedDatetime" type="Timestamp" mode="IN" optional="true"/> <attribute name="requireInventory" type="String" mode="IN" optional="false"/> <attribute name="reserveOrderEnumId" type="String" mode="IN" optional="true"/> + <attribute name="reserveReasonEnumId" type="String" mode="IN" optional="false"/> <attribute name="sequenceId" type="Long" mode="IN" optional="true"/> + <attribute name="priority" type="String" mode="IN" optional="true"/> <attribute name="quantityNotReserved" type="BigDecimal" mode="OUT" optional="false"/> </service> <service name="updateEbayStoreInventory" engine="java" transaction-timeout="3600" @@ -227,5 +232,24 @@ <attribute name="productStoreId" type="String" mode="IN" optional="false"/> <attribute name="folderId" type="String" mode="OUT" optional="false"></attribute> </service> + <service name="updateEbayInventoryStatusByProductId" default-entity-name="EbayProductStoreInventory" engine="java" transaction-timeout="3600" + location="org.ofbiz.ebaystore.EbayStoreInventoryServices" invoke="updateEbayInventoryStatusByProductId" auth="true"> + <description>update status Inventory from ebay store inventory</description> + <auto-attributes mode="INOUT" optional="false" include="pk"></auto-attributes> + <attribute name="folderId" type="String" mode="INOUT" optional="false"></attribute> + <attribute name="ebayProductId" type="Long" mode="IN" optional="false"></attribute> + </service> + <service name="updateEbayInventoryStatus" engine="java" transaction-timeout="7200" + location="org.ofbiz.ebaystore.EbayStoreInventoryServices" invoke="updateEbayInventoryStatus" auth="true"> + <attribute name="productStoreId" type="String" mode="IN" optional="false"></attribute> + <attribute name="facilityId" type="String" mode="IN" optional="false"></attribute> + </service> + <service name="updateEbayProductQtyReserved" default-entity-name="EbayProductStoreInventory" engine="simple" + location="component://ebaystore/script/org/ofbiz/ebaystore/EbayServices.xml" invoke="updateEbayProductQtyReserved" auth="true"> + <description>Update/cancel an Product quantity that reserved from inventory</description> + <auto-attributes include="pk" mode="IN" optional="false"/> + <attribute name="quantity" type="BigDecimal" mode="IN" optional="false"></attribute> + <attribute name="actionType" type="String" mode="IN" optional="false"></attribute> + </service> </services> \ No newline at end of file Modified: ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStore.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStore.java?rev=906373&r1=906372&r2=906373&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStore.java (original) +++ ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStore.java Thu Feb 4 06:01:06 2010 @@ -466,14 +466,14 @@ String userLoginId = null; String password = null; - if(context.get("productStoreId") != null){ + if (context.get("productStoreId") != null) { String partyId = null; try { List<GenericValue> productStoreRoles = delegator.findByAnd("ProductStoreRole", UtilMisc.toMap("productStoreId", context.get("productStoreId").toString(),"roleTypeId","EBAY_ACCOUNT")); - if(productStoreRoles!=null){ + if (productStoreRoles!=null) { partyId= (String)productStoreRoles.get(0).get("partyId"); List<GenericValue> userLogin = delegator.findByAnd("UserLogin", UtilMisc.toMap("partyId", partyId)); - if(userLogin!=null){ + if (userLogin!=null) { userLoginId = (String)userLogin.get(0).get("userLoginId"); password = (String)userLogin.get(0).get("currentPassword"); } @@ -490,10 +490,10 @@ try { resp = (GetStoreResponseType)call.execute(req); - if(resp != null && "SUCCESS".equals(resp.getAck().toString())){ + if (resp != null && "SUCCESS".equals(resp.getAck().toString())) { returnedStoreType = resp.getStore(); result.put(ModelService.RESPONSE_MESSAGE, ModelService.RESPOND_SUCCESS); - result.put(ModelService.SUCCESS_MESSAGE, UtilProperties.getMessage(resource, "EbayStoreLoadSuccess", locale)); + //result.put(ModelService.SUCCESS_MESSAGE, UtilProperties.getMessage(resource, "EbayStoreLoadSuccess", locale)); // update product store in ofbiz updateProductStore(dctx, context,returnedStoreType,(String)context.get("productStoreId")); Map<String,Object> ebayResp = FastMap.newInstance(); @@ -501,7 +501,7 @@ ebayResp.put("storeUrl", returnedStoreType.getURL()); ebayResp.put("storeUrlPath", returnedStoreType.getURLPath()); String desc = returnedStoreType.getDescription(); - if(desc!=null) desc = desc.trim(); + if (desc!=null) desc = desc.trim(); ebayResp.put("storeDesc", desc); StoreLogoType logoType = returnedStoreType.getLogo(); @@ -526,13 +526,13 @@ ebayResp.put("storeNameColor",fontType.getNameColor()); ebayResp.put("storeTitleColor",fontType.getTitleColor()); - if(fontType!=null){// basic & advance theme + if (fontType!=null) {// basic & advance theme String themeId = themeType.getThemeID().toString().concat("-").concat(colorSchemeType.getColorSchemeID().toString()); context.put("themeId", themeId); Map<String,Object> results = retrieveThemeColorSchemeByThemeId(dctx,context); - if(results!=null){ + if (results!=null) { Map<String,Object> storeFontScheme = (Map<String,Object>)results.get("storeFontScheme"); - if(storeFontScheme!=null){ + if (storeFontScheme!=null) { ebayResp.put("storeDescFontFace",storeFontScheme.get("storeFontTypeFontDescValue")); ebayResp.put("storeDescSizeCode", storeFontScheme.get("storeDescSizeValue")); @@ -548,10 +548,10 @@ StoreHeaderStyleCodeType storeHeaderStyleCodeType = returnedStoreType.getHeaderStyle(); ebayResp.put("storeHeaderStyle", storeHeaderStyleCodeType.value()); StoreHeaderStyleCodeType[] storeHeaderStyleCodeList = storeHeaderStyleCodeType.values(); - if(storeHeaderStyleCodeList != null){ + if (storeHeaderStyleCodeList != null) { List<Map<String,Object>> storeHeaderStyleList = FastList.newInstance(); int i=0; - while(i<storeHeaderStyleCodeList.length){ + while (i<storeHeaderStyleCodeList.length) { Map<String,Object> storeHeaderStyleMap = FastMap.newInstance(); StoreHeaderStyleCodeType storeHeaderStyleCode = storeHeaderStyleCodeList[i]; storeHeaderStyleMap.put("storeHeaderStyleName",storeHeaderStyleCode.name()); @@ -567,10 +567,10 @@ StoreItemListLayoutCodeType storeItemListLayoutCodeType = returnedStoreType.getItemListLayout(); ebayResp.put("storeItemLayoutSelected", storeItemListLayoutCodeType.value()); StoreItemListLayoutCodeType[] storeItemListLayoutCodeTypeList = storeItemListLayoutCodeType.values(); - if(storeItemListLayoutCodeTypeList!=null){ + if (storeItemListLayoutCodeTypeList!=null) { List<Map<String,Object>> storeItemListLayoutCodeList = FastList.newInstance(); int i=0; - while(i<storeItemListLayoutCodeTypeList.length){ + while (i<storeItemListLayoutCodeTypeList.length) { Map<String,Object> storeItemListLayoutCodeMap = FastMap.newInstance(); StoreItemListLayoutCodeType storeItemListLayoutCode = storeItemListLayoutCodeTypeList[i]; storeItemListLayoutCodeMap.put("storeItemLayoutName",storeItemListLayoutCode.name()); @@ -583,10 +583,10 @@ StoreItemListSortOrderCodeType storeItemListSortOrderCodeType = returnedStoreType.getItemListSortOrder(); ebayResp.put("storeItemSortOrderSelected", storeItemListSortOrderCodeType.value()); StoreItemListSortOrderCodeType[] storeItemListSortOrderCodeTypeList = storeItemListSortOrderCodeType.values(); - if(storeItemListSortOrderCodeTypeList!=null){ + if (storeItemListSortOrderCodeTypeList!=null) { List<Map<String,Object>> storeItemSortOrderCodeList = FastList.newInstance(); int i=0; - while(i<storeItemListSortOrderCodeTypeList.length){ + while (i<storeItemListSortOrderCodeTypeList.length) { Map<String,Object> storeItemSortOrderCodeMap = FastMap.newInstance(); StoreItemListSortOrderCodeType storeItemListLayoutCode = storeItemListSortOrderCodeTypeList[i]; storeItemSortOrderCodeMap.put("storeItemSortLayoutName",storeItemListLayoutCode.name()); @@ -601,10 +601,10 @@ StoreCustomHeaderLayoutCodeType storeCustomHeaderLayoutCodeType = returnedStoreType.getCustomHeaderLayout(); ebayResp.put("storeCustomHeaderLayout",storeCustomHeaderLayoutCodeType.value()); StoreCustomHeaderLayoutCodeType[] storeCustomHeaderLayoutCodeTypeList = storeCustomHeaderLayoutCodeType.values(); - if(storeCustomHeaderLayoutCodeTypeList!=null){ + if (storeCustomHeaderLayoutCodeTypeList!=null) { List<Map<String,Object>> storeCustomHeaderLayoutList = FastList.newInstance(); int i=0; - while(i<storeCustomHeaderLayoutCodeTypeList.length){ + while (i<storeCustomHeaderLayoutCodeTypeList.length) { Map<String,Object> storeCustomHeaderLayoutMap = FastMap.newInstance(); StoreCustomHeaderLayoutCodeType StoreCustomHeaderLayoutCode = storeCustomHeaderLayoutCodeTypeList[i]; storeCustomHeaderLayoutMap.put("storeCustomHeaderLayoutName",StoreCustomHeaderLayoutCode.name()); @@ -616,7 +616,7 @@ } StoreCustomListingHeaderType storeCustomListingHeaderType = returnedStoreType.getCustomListingHeader(); - if(storeCustomListingHeaderType!=null){ + if (storeCustomListingHeaderType!=null) { StoreCustomListingHeaderDisplayCodeType storeCustomListingHeaderDisplayCodeType = storeCustomListingHeaderType.getDisplayType(); ebayResp.put("isLogo",storeCustomListingHeaderType.isLogo()); ebayResp.put("isSearchBox",storeCustomListingHeaderType.isSearchBox()); @@ -626,10 +626,10 @@ ebayResp.put("storeCustomListingHeaderDisplayName",storeCustomListingHeaderDisplayCodeType.name()); ebayResp.put("storeCustomListingHeaderDisplayValue",storeCustomListingHeaderDisplayCodeType.value()); StoreCustomListingHeaderDisplayCodeType[] storeCustomListingHeaderDisplayCodeTypeList = storeCustomListingHeaderDisplayCodeType.values(); - if(storeCustomListingHeaderDisplayCodeTypeList != null){ + if (storeCustomListingHeaderDisplayCodeTypeList != null) { List<Map<String,Object>> storeCustomListingHeaderDisplayCodeList = FastList.newInstance(); int i=0; - while(i<storeCustomListingHeaderDisplayCodeTypeList.length){ + while (i<storeCustomListingHeaderDisplayCodeTypeList.length) { Map<String,Object> storeCustomListingHeaderDisplayCodeMap = FastMap.newInstance(); StoreCustomListingHeaderDisplayCodeType storeCustomListingHeaderDisplayCode = storeCustomListingHeaderDisplayCodeTypeList[i]; storeCustomListingHeaderDisplayCodeMap.put("storeCustomHeaderLayoutName",storeCustomListingHeaderDisplayCode.name()); @@ -645,10 +645,10 @@ MerchDisplayCodeType merchDisplayCodeType = returnedStoreType.getMerchDisplay(); ebayResp.put("storeMerchDisplay",merchDisplayCodeType.value()); MerchDisplayCodeType[] merchDisplayCodeTypeList = merchDisplayCodeType.values(); - if(merchDisplayCodeTypeList!=null){ + if (merchDisplayCodeTypeList!=null) { List<Map<String,Object>> merchDisplayCodeList = FastList.newInstance(); int i=0; - while(i<merchDisplayCodeTypeList.length){ + while (i<merchDisplayCodeTypeList.length) { Map<String,Object> merchDisplayCodeMap = FastMap.newInstance(); MerchDisplayCodeType merchDisplayCode = merchDisplayCodeTypeList[i]; merchDisplayCodeMap.put("merchDisplayCodeName",merchDisplayCode.name()); @@ -663,10 +663,10 @@ ebayResp.put("storeLastOpenedTime", calendar.getTime().toString()); ebayResp.put("storeSubscriptionLevel",returnedStoreType.getSubscriptionLevel().value()); StoreSubscriptionLevelCodeType[] storeSubscriptionlevelList = returnedStoreType.getSubscriptionLevel().values(); - if(storeSubscriptionlevelList!=null){ + if (storeSubscriptionlevelList!=null) { List<Map<String,Object>> storeSubscriptionLevelCodeList = FastList.newInstance(); int i=0; - while(i<storeSubscriptionlevelList.length){ + while (i<storeSubscriptionlevelList.length) { Map<String,Object> storeSubscriptionLevelCodeMap = FastMap.newInstance(); StoreSubscriptionLevelCodeType storeSubscriptionLevelCode= storeSubscriptionlevelList[i]; storeSubscriptionLevelCodeMap.put("storeSubscriptionLevelCodeName", storeSubscriptionLevelCode.name()); @@ -678,7 +678,7 @@ } result.put("ebayStore", ebayResp); - }else{ + } else { result.put(ModelService.RESPONSE_MESSAGE, ModelService.RESPOND_ERROR); result.put(ModelService.ERROR_MESSAGE,resp.getAck().toString()+":"+resp.getMessage()); } @@ -698,7 +698,6 @@ public static void updateProductStore(DispatchContext dctx,Map<String,Object> context,StoreType returnStoreType,String productStoreId){ LocalDispatcher dispatcher = dctx.getDispatcher(); - Delegator delegator = dctx.getDelegator(); try{ Map<String,Object> inMap = FastMap.newInstance(); if(returnStoreType != null){ @@ -723,17 +722,16 @@ GetStoreOptionsRequestType req = null; GetStoreOptionsResponseType resp = null; StoreThemeArrayType returnedBasicThemeArray = null; - StoreThemeArrayType returnedAdvanceThemeArray = null; try { - if(context.get("productStoreId") != null){ + if (context.get("productStoreId") != null) { String themeId = (String)context.get("themeId"); GetStoreOptionsCall call = new GetStoreOptionsCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); req = new GetStoreOptionsRequestType(); resp = (GetStoreOptionsResponseType) call.execute(req); - if(resp != null && "SUCCESS".equals(resp.getAck().toString())){ + if (resp != null && "SUCCESS".equals(resp.getAck().toString())) { returnedBasicThemeArray = resp.getBasicThemeArray(); StoreThemeType[] storeBasicTheme = returnedBasicThemeArray.getTheme(); @@ -743,14 +741,12 @@ themeId = themeId.substring(0,themeId.indexOf("-")); Map<String,Object> storeColorSchemeMap = null; - boolean flag = false; - while(i<storeBasicTheme.length){ - + while (i<storeBasicTheme.length) { StoreThemeType storeThemeType = (StoreThemeType)storeBasicTheme[i]; - if(themeId.equals(storeThemeType.getThemeID().toString())){ + if (themeId.equals(storeThemeType.getThemeID().toString())) { StoreColorSchemeType colorSchemeType = storeThemeType.getColorScheme(); - if(colorSchemeType!=null){ - if(colorSchemeId.equals(colorSchemeType.getColorSchemeID().toString())){ + if (colorSchemeType!=null) { + if (colorSchemeId.equals(colorSchemeType.getColorSchemeID().toString())) { // get font,size and color storeColorSchemeMap = FastMap.newInstance(); StoreFontType storeFontType = colorSchemeType.getFont(); @@ -762,7 +758,6 @@ storeColorSchemeMap.put("storeFontTypeFontDescValue",storeFontType.getDescFace().value()); storeColorSchemeMap.put("storeDescSizeValue",storeFontType.getDescSize().value()); - flag=true; break; } } @@ -791,18 +786,18 @@ StoreLogoArrayType returnedLogoArray = null; GetStoreOptionsResponseType resp = null; try { - if(context.get("productStoreId") != null){ + if (context.get("productStoreId") != null) { GetStoreOptionsCall call = new GetStoreOptionsCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); req = new GetStoreOptionsRequestType(); resp = (GetStoreOptionsResponseType) call.execute(req); - if(resp != null && "SUCCESS".equals(resp.getAck().toString())){ + if (resp != null && "SUCCESS".equals(resp.getAck().toString())) { returnedLogoArray = resp.getLogoArray(); int i=0; List<Map<String,Object>> logoList = FastList.newInstance(); - while(i<returnedLogoArray.getLogoLength()){ + while (i<returnedLogoArray.getLogoLength()) { Map<String,Object> logo = FastMap.newInstance(); StoreLogoType storeLogoType = (StoreLogoType)returnedLogoArray.getLogo(i); logo.put("storeLogoId", storeLogoType.getLogoID()); @@ -832,18 +827,18 @@ StoreThemeArrayType returnedBasicThemeArray = null; GetStoreOptionsResponseType resp = null; try { - if(context.get("productStoreId") != null){ + if (context.get("productStoreId") != null) { GetStoreOptionsCall call = new GetStoreOptionsCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); req = new GetStoreOptionsRequestType(); resp = (GetStoreOptionsResponseType) call.execute(req); StoreColorSchemeType storeFontColorSchemeType = null; - if(resp != null && "SUCCESS".equals(resp.getAck().toString())){ + if (resp != null && "SUCCESS".equals(resp.getAck().toString())) { returnedBasicThemeArray = resp.getBasicThemeArray(); int i=0; List<Map<String,Object>> themeList = FastList.newInstance(); - while(i<returnedBasicThemeArray.getThemeLength()){ + while (i<returnedBasicThemeArray.getThemeLength()) { Map<String,Object> basictheme = FastMap.newInstance(); StoreThemeType storeBasicThemeType = (StoreThemeType)returnedBasicThemeArray.getTheme(i); basictheme.put("storeThemeId", storeBasicThemeType.getThemeID()); @@ -853,10 +848,9 @@ basictheme.put("storeColorSchemeId",storeColorSchemeType.getColorSchemeID()); basictheme.put("storeColorSchemeName",storeColorSchemeType.getName()); - if(storeFontColorSchemeType == null){ + if (storeFontColorSchemeType == null) { storeFontColorSchemeType = storeBasicThemeType.getColorScheme(); } - themeList.add(basictheme); i++; } Modified: ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreInventoryServices.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreInventoryServices.java?rev=906373&r1=906372&r2=906373&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreInventoryServices.java (original) +++ ofbiz/trunk/specialpurpose/ebaystore/src/org/ofbiz/ebaystore/EbayStoreInventoryServices.java Thu Feb 4 06:01:06 2010 @@ -1,5 +1,7 @@ package org.ofbiz.ebaystore; +import java.math.BigDecimal; +import java.util.List; import java.util.Locale; import java.util.Map; import javolution.util.FastMap; @@ -9,6 +11,8 @@ import org.ofbiz.entity.GenericEntityException; import org.ofbiz.entity.GenericValue; import org.ofbiz.service.DispatchContext; +import org.ofbiz.service.GenericServiceException; +import org.ofbiz.service.LocalDispatcher; import org.ofbiz.service.ServiceUtil; import com.ebay.sdk.ApiException; import com.ebay.sdk.SdkException; @@ -30,6 +34,7 @@ import com.ebay.soap.eBLBaseComponents.ReviseSellingManagerProductResponseType; import com.ebay.soap.eBLBaseComponents.SellingManagerFolderDetailsType; import com.ebay.soap.eBLBaseComponents.SellingManagerProductDetailsType; +import com.ebay.soap.eBLBaseComponents.SellingManagerProductInventoryStatusType; import com.ebay.soap.eBLBaseComponents.SellingManagerProductType; public class EbayStoreInventoryServices { @@ -50,7 +55,7 @@ boolean checkProd = false; boolean status = false; try { - if(context.get("productStoreId") == null || context.get("productId") == null || context.get("folderId") == null){ + if (context.get("productStoreId") == null || context.get("productId") == null || context.get("folderId") == null) { result = ServiceUtil.returnError("The process was required productStoreId, productId and ebay inventory folderId."); result.put("productStoreId", context.get("productStoreId")); result.put("facilityId", context.get("facilityId")); @@ -61,17 +66,17 @@ String productId = (String)context.get("productId"); String folderId = (String)context.get("folderId"); // start upload/update products which selected to an ebay inventory - if(folderId != null){ + if (folderId != null) { GetSellingManagerInventoryCall invenCall = new GetSellingManagerInventoryCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); invenReq = new GetSellingManagerInventoryRequestType(); invenResp = (GetSellingManagerInventoryResponseType) invenCall.execute(invenReq); - if(invenResp != null && "SUCCESS".equals(invenResp.getAck().toString())){ + if (invenResp != null && "SUCCESS".equals(invenResp.getAck().toString())) { GenericValue ebayProductStoreInventory = delegator.findByPrimaryKey("EbayProductStoreInventory", UtilMisc.toMap("productId", productId,"facilityId",context.get("facilityId"),"productStoreId",context.get("productStoreId"))); SellingManagerProductType[] sellingManagerProductTypeList = invenResp.getSellingManagerProduct(); - for(SellingManagerProductType sellingManagerProductType : sellingManagerProductTypeList){ + for (SellingManagerProductType sellingManagerProductType : sellingManagerProductTypeList){ SellingManagerProductDetailsType sellingManagerProductDetailsType = sellingManagerProductType.getSellingManagerProductDetails(); - if(String.valueOf(sellingManagerProductDetailsType.getFolderID()).equals(folderId) && String.valueOf(sellingManagerProductDetailsType.getProductID()).equals(String.valueOf(ebayProductStoreInventory.getLong("ebayProductId"))) && String.valueOf(sellingManagerProductDetailsType.getCustomLabel()).equals(productId)){ + if (String.valueOf(sellingManagerProductDetailsType.getFolderID()).equals(folderId) && String.valueOf(sellingManagerProductDetailsType.getProductID()).equals(String.valueOf(ebayProductStoreInventory.getLong("ebayProductId"))) && String.valueOf(sellingManagerProductDetailsType.getCustomLabel()).equals(productId)){ checkProd = true; break; } @@ -79,15 +84,15 @@ } // checkProduct is true then update detail but is false do create new one. - if(checkProd == true){ + if (checkProd) { status = updateProductInEbayInventoryFolder(dctx,context); - }else { + } else { status = createNewProductInEbayInventoryFolder(dctx,context); } - if(status == true){ + if (status) { Debug.logInfo("Done to updated product ".concat(context.get("productId").toString()), module); result = ServiceUtil.returnSuccess("Updated ebay store inventory in folder "+context.get("folderId")+" success.."); - }else{ + } else { result = ServiceUtil.returnError("Fail to update ebay store inventory."); } } @@ -115,7 +120,7 @@ boolean flag = false; try { - if(context.get("productStoreId") != null && context.get("productId")!=null && context.get("folderId")!=null){ + if (context.get("productStoreId") != null && context.get("productId")!=null && context.get("folderId")!=null) { String productId = (String)context.get("productId"); String folderId = (String)context.get("folderId"); AddSellingManagerProductCall productCall = new AddSellingManagerProductCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); @@ -127,16 +132,16 @@ sellingManagerProductDetailsType.setProductName((delegator.findByPrimaryKey("Product", UtilMisc.toMap("productId", productId))).getString("internalName")); //Must keep productId in SKU NUMBER because ebay allow productId field only long value. sellingManagerProductDetailsType.setCustomLabel(productId); - if(ebayProductStoreInventory!=null) sellingManagerProductDetailsType.setQuantityAvailable(ebayProductStoreInventory.getBigDecimal("availableToPromiseListing").intValue()); + if (ebayProductStoreInventory!=null) sellingManagerProductDetailsType.setQuantityAvailable(ebayProductStoreInventory.getBigDecimal("availableToPromiseListing").intValue()); productReq.setSellingManagerProductDetails(sellingManagerProductDetailsType); productResp = (AddSellingManagerProductResponseType) productCall.execute(productReq); - if(productResp != null && "SUCCESS".equals(productResp.getAck().toString())){ + if (productResp != null && "SUCCESS".equals(productResp.getAck().toString())) { flag = true; ebayProductStoreInventory.put("ebayProductId", productResp.getSellingManagerProductDetails().getProductID()); ebayProductStoreInventory.put("folderId", folderId); ebayProductStoreInventory.store(); - }else{ + } else { Debug.logError("Fail to create inventory product ".concat(productId).concat("in productStore ").concat(context.get("productStoreId").toString()).concat(" message from ebay : ").concat(productResp.getMessage()), module); } } @@ -161,7 +166,7 @@ boolean flag = false; try { - if(context.get("productStoreId") != null && context.get("productId")!=null && context.get("folderId")!=null){ + if (context.get("productStoreId") != null && context.get("productId")!=null && context.get("folderId")!=null) { String productId = (String)context.get("productId"); String folderId = (String)context.get("folderId"); ReviseSellingManagerProductCall call = new ReviseSellingManagerProductCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); @@ -169,11 +174,11 @@ SellingManagerProductDetailsType sellingManagerProductDetailsType = new SellingManagerProductDetailsType(); GenericValue ebayProductStoreInventory = delegator.findByPrimaryKey("EbayProductStoreInventory", UtilMisc.toMap("productId", productId,"facilityId",context.get("facilityId"),"productStoreId",context.get("productStoreId"))); Long ebayProductId = null; - if(ebayProductStoreInventory !=null && ebayProductStoreInventory.getLong("ebayProductId")==null){ + if (ebayProductStoreInventory !=null && ebayProductStoreInventory.getLong("ebayProductId")==null) { Debug.logError("Can not update product "+productId+" has no ebay product Id in EbayProductStoreInventory. ", module); return flag; } - if(ebayProductStoreInventory!=null && ebayProductStoreInventory.getLong("ebayProductId")!=null){ + if (ebayProductStoreInventory!=null && ebayProductStoreInventory.getLong("ebayProductId")!=null) { ebayProductId = ebayProductStoreInventory.getLong("ebayProductId"); } sellingManagerProductDetailsType.setProductID(ebayProductId); @@ -181,16 +186,16 @@ sellingManagerProductDetailsType.setProductName((delegator.findByPrimaryKey("Product", UtilMisc.toMap("productId", productId))).getString("internalName")); //Must keep productId in SKU NUMBER because ebay allow productId field only long value. sellingManagerProductDetailsType.setCustomLabel(productId); - if(ebayProductStoreInventory!=null) sellingManagerProductDetailsType.setQuantityAvailable(ebayProductStoreInventory.getBigDecimal("availableToPromiseListing").intValue()); + if (ebayProductStoreInventory!=null) sellingManagerProductDetailsType.setQuantityAvailable(ebayProductStoreInventory.getBigDecimal("availableToPromiseListing").intValue()); req.setSellingManagerProductDetails(sellingManagerProductDetailsType); resp = (ReviseSellingManagerProductResponseType) call.execute(req); - if(resp != null && "SUCCESS".equals(resp.getAck().toString())){ + if (resp != null && "SUCCESS".equals(resp.getAck().toString())) { flag = true; ebayProductStoreInventory.put("ebayProductId", ebayProductId); ebayProductStoreInventory.put("folderId", folderId); ebayProductStoreInventory.store(); - }else{ + } else { Debug.logError("Fail to update inventory product ".concat(productId).concat("in productStore ").concat(context.get("productStoreId").toString()).concat(" message from ebay : ").concat(resp.getMessage()), module); } } @@ -215,24 +220,24 @@ boolean flag = false; try { - if(context.get("productStoreId") != null){ + if (context.get("productStoreId") != null) { GetSellingManagerInventoryFolderCall call = new GetSellingManagerInventoryFolderCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); req = new GetSellingManagerInventoryFolderRequestType(); resp = (GetSellingManagerInventoryFolderResponseType) call.execute(req); - if(resp != null && "SUCCESS".equals(resp.getAck().toString())){ + if (resp != null && "SUCCESS".equals(resp.getAck().toString())) { SellingManagerFolderDetailsType sellingManagerFolderDetailsType = resp.getFolder(); - if(sellingManagerFolderDetailsType!=null){ + if (sellingManagerFolderDetailsType!=null) { SellingManagerFolderDetailsType[] SellingManagerFolderDetailsTypeList = sellingManagerFolderDetailsType.getChildFolder(); - for(SellingManagerFolderDetailsType sellingManagerFolderDetails : SellingManagerFolderDetailsTypeList){ + for (SellingManagerFolderDetailsType sellingManagerFolderDetails : SellingManagerFolderDetailsTypeList) { Debug.logInfo("ebay inventory folders name ".concat(sellingManagerFolderDetails.getFolderName()), module); - if(sellingManagerFolderDetails.getFolderName().equals(defaultFolderName)){ + if (sellingManagerFolderDetails.getFolderName().equals(defaultFolderName)) { folderId = String.valueOf(sellingManagerFolderDetails.getFolderID()); flag = true; break; } } } - if(flag == false){ + if (!flag) { folderId = createNewFolderInEbayStoreInventory(dctx,context); } } @@ -245,7 +250,7 @@ } catch (SdkException e) { result = ServiceUtil.returnFailure(e.getMessage()); } - if(result.get("responseMessage")!=null && result.get("responseMessage").equals("fail")) folderId = null; + if (result.get("responseMessage")!=null && result.get("responseMessage").equals("fail")) folderId = null; result.put("folderId", folderId); Debug.logInfo("service return result "+ result, module); return result; @@ -259,14 +264,14 @@ AddSellingManagerInventoryFolderResponseType resp = null; try { - if(context.get("productStoreId") != null){ + if (context.get("productStoreId") != null) { AddSellingManagerInventoryFolderCall call = new AddSellingManagerInventoryFolderCall(EbayStoreHelper.getApiContext((String)context.get("productStoreId"), locale, delegator)); req = new AddSellingManagerInventoryFolderRequestType(); req.setFolderName(defaultFolderName);//req.setComment(value);//req.setParentFolderID(value) resp = (AddSellingManagerInventoryFolderResponseType) call.execute(req); - if(resp != null && "SUCCESS".equals(resp.getAck().toString())) { + if (resp != null && "SUCCESS".equals(resp.getAck().toString())) { folderId = String.valueOf(resp.getFolderID()); - }else { + } else { Debug.logError("The problem with create new folder on ebay site.", module); return folderId; } @@ -280,4 +285,84 @@ } return folderId; } + /* update inventory status from ebay store inventory */ + public static Map<String,Object> updateEbayInventoryStatusByProductId(DispatchContext dctx, Map<String,Object> context){ + Locale locale = (Locale) context.get("locale"); + Map<String,Object> result = FastMap.newInstance(); + Delegator delegator = dctx.getDelegator(); + String productStoreId = (String)context.get("productStoreId"); + String facilityId = (String)context.get("facilityId"); + String folderId = (String)context.get("folderId"); + String productId = (String)context.get("productId"); + String ebayProductId = null; + GetSellingManagerInventoryRequestType req = null; + GetSellingManagerInventoryResponseType resp = null; + GenericValue ebayProductStoreInventory = null; + + if (context.get("ebayProductId") != null) { + ebayProductId = String.valueOf(context.get("ebayProductId")); + } + try { + if (productStoreId != null && ebayProductId != null) { + ebayProductStoreInventory = delegator.findByPrimaryKey("EbayProductStoreInventory", UtilMisc.toMap("productId", productId,"facilityId",facilityId,"productStoreId",productStoreId)); + GetSellingManagerInventoryCall call = new GetSellingManagerInventoryCall(EbayStoreHelper.getApiContext(productStoreId, locale, delegator)); + req = new GetSellingManagerInventoryRequestType(); + resp = (GetSellingManagerInventoryResponseType) call.execute(req); + if (resp != null && "SUCCESS".equals(resp.getAck().toString())) { + SellingManagerProductType[] sellingManagerProductTypeList = resp.getSellingManagerProduct(); + for (SellingManagerProductType sellingManagerProductType : sellingManagerProductTypeList) { + SellingManagerProductDetailsType productDetail = sellingManagerProductType.getSellingManagerProductDetails(); + if (String.valueOf(productDetail.getFolderID()).equals(folderId) && String.valueOf(productDetail.getProductID()).equals(ebayProductId) && String.valueOf(productDetail.getCustomLabel()).equals(productId)) { + SellingManagerProductInventoryStatusType prodInventoryStatus = sellingManagerProductType.getSellingManagerProductInventoryStatus(); + ebayProductStoreInventory.put("activeListing",new BigDecimal(prodInventoryStatus.getQuantityActive())); + ebayProductStoreInventory.put("scheduled",new BigDecimal(prodInventoryStatus.getQuantityScheduled())); + ebayProductStoreInventory.put("sold",new BigDecimal(prodInventoryStatus.getQuantitySold())); + ebayProductStoreInventory.put("unSold",new BigDecimal(prodInventoryStatus.getQuantityUnsold())); + ebayProductStoreInventory.store(); + result = ServiceUtil.returnSuccess("Updated inventory status of product ".concat(productId)); + break; + } + } + } else { + Debug.logError("The problem with get manage inventory detail from ebay site.", module); + } + } + } catch (ApiException e) { + result = ServiceUtil.returnFailure(e.getMessage()); + } catch (SdkSoapException e) { + result = ServiceUtil.returnFailure(e.getMessage()); + } catch (SdkException e) { + result = ServiceUtil.returnFailure(e.getMessage()); + } catch (GenericEntityException e) { + result = ServiceUtil.returnFailure(e.getMessage()); + } + result.put("productStoreId", context.get("productStoreId")); + result.put("facilityId", context.get("facilityId")); + result.put("folderId", context.get("folderId")); + result.put("productId", productId); + return result; + } + public static Map<String,Object> updateEbayInventoryStatus(DispatchContext dctx, Map<String,Object> context){ + LocalDispatcher dispatcher = dctx.getDispatcher(); + Map<String,Object> result = FastMap.newInstance(); + Delegator delegator = dctx.getDelegator(); + List<GenericValue> ebayProductStoreInventoryList = null; + + try { + if (context.get("productStoreId") != null && context.get("facilityId") != null) { + ebayProductStoreInventoryList = delegator.findByAnd("EbayProductStoreInventory", UtilMisc.toMap("facilityId",(String)context.get("facilityId"),"productStoreId",(String)context.get("productStoreId"))); + for (GenericValue ebayProductStoreInventory : ebayProductStoreInventoryList) { + if (ebayProductStoreInventory.get("ebayProductId") != null) { + dispatcher.runSync("updateEbayInventoryStatusByProductId",UtilMisc.toMap("productStoreId",(String)context.get("productStoreId"),"facilityId",(String)context.get("facilityId"),"folderId",ebayProductStoreInventory.get("folderId"),"productId",ebayProductStoreInventory.get("productId"),"ebayProductId",ebayProductStoreInventory.get("ebayProductId"),"userLogin",context.get("userLogin"))); + } + } + } + } catch (GenericEntityException e) { + result = ServiceUtil.returnFailure(e.getMessage()); + } catch (GenericServiceException e) { + result = ServiceUtil.returnFailure(e.getMessage()); + } + result = ServiceUtil.returnSuccess(); + return result; + } } Modified: ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/controller.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/controller.xml?rev=906373&r1=906372&r2=906373&view=diff ============================================================================== --- ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/controller.xml (original) +++ ofbiz/trunk/specialpurpose/ebaystore/webapp/ebaystore/WEB-INF/controller.xml Thu Feb 4 06:01:06 2010 @@ -139,7 +139,7 @@ </request-map> <request-map uri="reserveProductInventory"> <security https="true" auth="true"/> - <event type="service" invoke="reserveEbayStoreInventory"/> + <event type="service" invoke="reserveEbayProductInventory"/> <response name="success" type="view" value="reserveEbayProductInventory"/> </request-map> <request-map uri="updateEbayStoreInventory"> @@ -147,6 +147,25 @@ <event type="service-multi" invoke="updateEbayStoreInventory"/> <response name="success" type="view" value="ebayLoadStoreInventory"/> </request-map> + <request-map uri="updateEbayStoreInventory"> + <security https="true" auth="true"/> + <event type="service-multi" invoke="updateEbayStoreInventory"/> + <response name="success" type="view" value="ebayLoadStoreInventory"/> + </request-map> + <request-map uri="updateEbayInventoryStatus"> + <security https="true" auth="true"/> + <event type="service" invoke="updateEbayInventoryStatus"/> + <response name="success" type="view" value="ebayLoadStoreInventory"/> + </request-map> + <request-map uri="updateQuantityReserved"> + <security https="true" auth="true"/> + <response name="success" type="view" value="updateQuantityReserved"/> + </request-map> + <request-map uri="updateProductQuantityReserved"> + <security https="true" auth="true"/> + <event type="service" invoke="updateEbayProductQtyReserved"/> + <response name="success" type="view" value="ebayLoadStoreInventory"/> + </request-map> <!-- end of request mappings --> <!-- View Mappings --> @@ -172,5 +191,6 @@ <view-map name="ebayStoreInventory" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#ebayStoreInventory"/> <view-map name="ebayLoadStoreInventory" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#ebayLoadStoreInventory"/> <view-map name="reserveEbayProductInventory" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#reserveEbayProductInventory"/> + <view-map name="updateQuantityReserved" type="screen" page="component://ebaystore/widget/EbayStoreScreens.xml#updateQuantityReserved"/> <!-- end of view mappings --> </site-conf> |
| Free forum by Nabble | Edit this page |
