Tuesday 10 May 2005 3:30:53 am
Hi, another time!
I've another problem (what new!!) I extend datatype ezoption and I include a field quantity to manage the stock for each option. Now I want decrease this stock when the costumer confirm the order.
Ok, I can do it if I put an integer like attribute of product, but I can't do it if the quantity is a field of an option because I don't know how could I access to change this field in the option. This is my code now and I put ????????????? at the space that I don't know how to do. Thanks!!!
function eZSimpleShippingType()
{
$this->eZWorkflowEventType( EZ_WORKFLOW_TYPE_SIMPLESHIPPING_ID, ezi18n( 'kernel/workflow/event', "Simple shipping" ) );
$this->setTriggerTypes( array( 'shop' => array( 'confirmorder' => array ( 'before' ) ) ) ); }
function execute( &$process, &$event )
{ $ini =& eZINI::instance( 'workflow.ini' );
$cost = $ini->variable( "SimpleShippingWorkflow", "ShippingCost" ); $description = $ini->variable( "SimpleShippingWorkflow", "ShippingDescription" );
$parameters = $process->attribute( 'parameter_list' ); $orderID = $parameters['order_id']; $order =& eZOrder::fetch( $orderID );
// Here start de stock's decrease
$productCollection = $order->productCollection();
$ordereditems = $productCollection->itemList();
foreach ($ordereditems as $item){
$contentObject = $item->contentObject();
$contentObjectVersion =& $contentObject->version( $contentObject->attribute( 'current_version' ) );
$contentObjectAttributes =& $contentObjectVersion->contentObjectAttributes();
foreach (array_keys($contentObjectAttributes) as $key){
$contentObjectAttribute =& $contentObjectAttributes[$key];
$contentClassAttribute =& $contentObjectAttribute->contentClassAttribute();
$contentClassAttributeID = $contentClassAttribute->attribute('id' );
$contentClassAttributeVersion = $contentClassAttribute->attribute('version' );
// Each attribute has an attribute called 'name' that identifies it.
echo ($contentClassAttribute->attribute("name"));
if ($contentClassAttribute->attribute("name") == "cantidad"){
$contentObjectAttribute->setAttribute("data_int", (($contentObjectAttribute->attribute("value"))-1));
$contentObjectAttribute->store();
}
if ($contentClassAttribute->attribute("name") == "opcion"){????????????????????????????????????????}
}
} //Here finish the decrease
$orderItems = $order->attribute( 'order_items' ); $addShipping = true;
foreach ( array_keys( $orderItems ) as $key )
{
$orderItem =& $orderItems[$key];
if ( $orderItem->attribute( 'description' ) == $description )
{
$addShipping = false;
break;
}
}
if ( $addShipping )
{
$orderItem = new eZOrderItem( array( 'order_id' => $orderID,
'description' => $description,
'price' => $cost,
'vat_is_included' => true,
'vat_type_id' => 1 )
);
$orderItem->store();
}
return EZ_WORKFLOW_TYPE_STATUS_ACCEPTED;
} } eZWorkflowEventType::registerType( EZ_WORKFLOW_TYPE_SIMPLESHIPPING_ID, "ezsimpleshippingtype" ); ?>
|