Skip to content

Commit

Permalink
Merge pull request #1614 from guerinaxel/patch-5
Browse files Browse the repository at this point in the history
Add extrafields to productorservice webservice
  • Loading branch information
eldy committed Jun 26, 2014
2 parents 338ad5a + 1e3b8e5 commit 51270ab
Showing 1 changed file with 144 additions and 77 deletions.
221 changes: 144 additions & 77 deletions htdocs/webservices/server_productorservice.php
Expand Up @@ -34,6 +34,7 @@

require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
require_once(DOL_DOCUMENT_ROOT."/categories/class/categorie.class.php");
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';



Expand Down Expand Up @@ -88,52 +89,72 @@
)
);

$productorservice_fields = array(
'id' => array('name'=>'id','type'=>'xsd:string'),
'ref' => array('name'=>'ref','type'=>'xsd:string'),
'ref_ext' => array('name'=>'ref_ext','type'=>'xsd:string'),
'type' => array('name'=>'type','type'=>'xsd:string'),
'label' => array('name'=>'label','type'=>'xsd:string'),
'description' => array('name'=>'description','type'=>'xsd:string'),
'date_creation' => array('name'=>'date_creation','type'=>'xsd:dateTime'),
'date_modification' => array('name'=>'date_modification','type'=>'xsd:dateTime'),
'note' => array('name'=>'note','type'=>'xsd:string'),
'status_tobuy' => array('name'=>'status_tobuy','type'=>'xsd:string'),
'status_tosell' => array('name'=>'status_tosell','type'=>'xsd:string'),
'barcode' => array('name'=>'barcode','type'=>'xsd:string'),
'barcode_type' => array('name'=>'barcode_type','type'=>'xsd:string'),
'country_id' => array('name'=>'country_id','type'=>'xsd:string'),
'country_code' => array('name'=>'country_code','type'=>'xsd:string'),
'customcode' => array('name'=>'customcode','type'=>'xsd:string'),

'price_net' => array('name'=>'price_net','type'=>'xsd:string'),
'price' => array('name'=>'price','type'=>'xsd:string'),
'price_min_net' => array('name'=>'price_min_net','type'=>'xsd:string'),
'price_min' => array('name'=>'price_min','type'=>'xsd:string'),

'price_base_type' => array('name'=>'price_base_type','type'=>'xsd:string'),

'vat_rate' => array('name'=>'vat_rate','type'=>'xsd:string'),
'vat_npr' => array('name'=>'vat_npr','type'=>'xsd:string'),
'localtax1_tx' => array('name'=>'localtax1_tx','type'=>'xsd:string'),
'localtax2_tx' => array('name'=>'localtax2_tx','type'=>'xsd:string'),

'stock_alert' => array('name'=>'stock_alert','type'=>'xsd:string'),
'stock_real' => array('name'=>'stock_real','type'=>'xsd:string'),
'stock_pmp' => array('name'=>'stock_pmp','type'=>'xsd:string'),
'canvas' => array('name'=>'canvas','type'=>'xsd:string'),
'import_key' => array('name'=>'import_key','type'=>'xsd:string'),

'dir' => array('name'=>'dir','type'=>'xsd:string'),
'images' => array('name'=>'images','type'=>'tns:ImagesArray')
);

//Retreive all extrafield for product
// fetch optionals attributes and labels
$extrafields=new ExtraFields($db);
$extralabels=$extrafields->fetch_name_optionals_label('product',true);
if (count($extrafields)>0) {
$extrafield_array = array();
}
foreach($extrafields->attribute_label as $key=>$label)
{
$type =$extrafields->attribute_type[$key];
if ($type=='date' || $type=='datetime') {$type='xsd:dateTime';}
else {$type='xsd:string';}

$extrafield_array['options_'.$key]=array('name'=>'options_'.$key,'type'=>$type);
}

$productorservice_fields=array_merge($productorservice_fields,$extrafield_array);

// Define other specific objects
$server->wsdl->addComplexType(
'product',
'complexType',
'struct',
'all',
'',
array(
'id' => array('name'=>'id','type'=>'xsd:string'),
'ref' => array('name'=>'ref','type'=>'xsd:string'),
'ref_ext' => array('name'=>'ref_ext','type'=>'xsd:string'),
'type' => array('name'=>'type','type'=>'xsd:string'),
'label' => array('name'=>'label','type'=>'xsd:string'),
'description' => array('name'=>'description','type'=>'xsd:string'),
'date_creation' => array('name'=>'date_creation','type'=>'xsd:dateTime'),
'date_modification' => array('name'=>'date_modification','type'=>'xsd:dateTime'),
'note' => array('name'=>'note','type'=>'xsd:string'),
'status_tobuy' => array('name'=>'status_tobuy','type'=>'xsd:string'),
'status_tosell' => array('name'=>'status_tosell','type'=>'xsd:string'),
'barcode' => array('name'=>'barcode','type'=>'xsd:string'),
'barcode_type' => array('name'=>'barcode_type','type'=>'xsd:string'),
'country_id' => array('name'=>'country_id','type'=>'xsd:string'),
'country_code' => array('name'=>'country_code','type'=>'xsd:string'),
'customcode' => array('name'=>'customcode','type'=>'xsd:string'),

'price_net' => array('name'=>'price_net','type'=>'xsd:string'),
'price' => array('name'=>'price','type'=>'xsd:string'),
'price_min_net' => array('name'=>'price_min_net','type'=>'xsd:string'),
'price_min' => array('name'=>'price_min','type'=>'xsd:string'),

'price_base_type' => array('name'=>'price_base_type','type'=>'xsd:string'),

'vat_rate' => array('name'=>'vat_rate','type'=>'xsd:string'),
'vat_npr' => array('name'=>'vat_npr','type'=>'xsd:string'),
'localtax1_tx' => array('name'=>'localtax1_tx','type'=>'xsd:string'),
'localtax2_tx' => array('name'=>'localtax2_tx','type'=>'xsd:string'),

'stock_alert' => array('name'=>'stock_alert','type'=>'xsd:string'),
'stock_real' => array('name'=>'stock_real','type'=>'xsd:string'),
'stock_pmp' => array('name'=>'stock_pmp','type'=>'xsd:string'),
'canvas' => array('name'=>'canvas','type'=>'xsd:string'),
'import_key' => array('name'=>'import_key','type'=>'xsd:string'),

'dir' => array('name'=>'dir','type'=>'xsd:string'),
'images' => array('name'=>'images','type'=>'tns:ImagesArray')
)
$productorservice_fields
);


Expand Down Expand Up @@ -357,47 +378,62 @@ function getProductOrService($authentication,$id='',$ref='',$ref_ext='',$lang=''
if (! empty($product->multilangs[$langs->defaultlang]["label"])) $product->label = $product->multilangs[$langs->defaultlang]["label"];
if (! empty($product->multilangs[$langs->defaultlang]["description"])) $product->description = $product->multilangs[$langs->defaultlang]["description"];
if (! empty($product->multilangs[$langs->defaultlang]["note"])) $product->note = $product->multilangs[$langs->defaultlang]["note"];


$productorservice_result_fields = array(
'id' => $product->id,
'ref' => $product->ref,
'ref_ext' => $product->ref_ext,
'label' => $product->label,
'description' => $product->description,
'date_creation' => dol_print_date($product->date_creation,'dayhourrfc'),
'date_modification' => dol_print_date($product->date_modification,'dayhourrfc'),
'note' => $product->note,
'status_tosell' => $product->status,
'status_tobuy' => $product->status_buy,
'type' => $product->type,
'barcode' => $product->barcode,
'barcode_type' => $product->barcode_type,
'country_id' => $product->country_id>0?$product->country_id:'',
'country_code' => $product->country_code,
'custom_code' => $product->customcode,

'price_net' => $product->price,
'price' => $product->price_ttc,
'price_min_net' => $product->price_min,
'price_min' => $product->price_min_ttc,
'price_base_type' => $product->price_base_type,
'vat_rate' => $product->tva_tx,
//! French VAT NPR
'vat_npr' => $product->tva_npr,
//! Spanish local taxes
'localtax1_tx' => $product->localtax1_tx,
'localtax2_tx' => $product->localtax2_tx,

'stock_real' => $product->stock_reel,
'stock_alert' => $product->seuil_stock_alerte,
'pmp' => $product->pmp,
'import_key' => $product->import_key,
'dir' => $pdir,
'images' => $product->liste_photos($dir,$nbmax=10)
);

//Retreive all extrafield for thirdsparty
// fetch optionals attributes and labels
$extrafields=new ExtraFields($db);
$extralabels=$extrafields->fetch_name_optionals_label('product',true);
//Get extrafield values
$product->fetch_optionals($product->id,$extralabels);

foreach($extrafields->attribute_label as $key=>$label)
{
$productorservice_result_fields=array_merge($productorservice_result_fields,array('options_'.$key => $product->array_options['options_'.$key]));
}

// Create
$objectresp = array(
'result'=>array('result_code'=>'OK', 'result_label'=>''),
'product'=>array(
'id' => $product->id,
'ref' => $product->ref,
'ref_ext' => $product->ref_ext,
'label' => $product->label,
'description' => $product->description,
'date_creation' => dol_print_date($product->date_creation,'dayhourrfc'),
'date_modification' => dol_print_date($product->date_modification,'dayhourrfc'),
'note' => $product->note,
'status_tosell' => $product->status,
'status_tobuy' => $product->status_buy,
'type' => $product->type,
'barcode' => $product->barcode,
'barcode_type' => $product->barcode_type,
'country_id' => $product->country_id>0?$product->country_id:'',
'country_code' => $product->country_code,
'custom_code' => $product->customcode,

'price_net' => $product->price,
'price' => $product->price_ttc,
'price_min_net' => $product->price_min,
'price_min' => $product->price_min_ttc,
'price_base_type' => $product->price_base_type,
'vat_rate' => $product->tva_tx,
//! French VAT NPR
'vat_npr' => $product->tva_npr,
//! Spanish local taxes
'localtax1_tx' => $product->localtax1_tx,
'localtax2_tx' => $product->localtax2_tx,

'stock_real' => $product->stock_reel,
'stock_alert' => $product->seuil_stock_alerte,
'pmp' => $product->pmp,
'import_key' => $product->import_key,
'dir' => $pdir,
'images' => $product->liste_photos($dir,$nbmax=10)
));
'product'=>$productorservice_result_fields
);
}
else
{
Expand Down Expand Up @@ -497,6 +533,14 @@ function createProductOrService($authentication,$product)
}*/
//var_dump($product['ref_ext']);
//var_dump($product['lines'][0]['type']);

$extrafields=new ExtraFields($db);
$extralabels=$extrafields->fetch_name_optionals_label('product',true);
foreach($extrafields->attribute_label as $key=>$label)
{
$key='options_'.$key;
$newobject->array_options[$key]=$product[$key];
}

$db->begin();

Expand Down Expand Up @@ -608,6 +652,14 @@ function updateProductOrService($authentication,$product)
}*/
//var_dump($product['ref_ext']);
//var_dump($product['lines'][0]['type']);

$extrafields=new ExtraFields($db);
$extralabels=$extrafields->fetch_name_optionals_label('product',true);
foreach($extrafields->attribute_label as $key=>$label)
{
$key='options_'.$key;
$newobject->array_options[$key]=$product[$key];
}

$db->begin();

Expand Down Expand Up @@ -875,6 +927,7 @@ function getProductsForCategory($authentication,$id,$lang='')
{
$obj = new Product($db);
$obj->fetch($rec['fk_'.$field]);
$iProduct = 0;
if($obj->status > 0 )
{
$dir = (!empty($conf->product->dir_output)?$conf->product->dir_output:$conf->service->dir_output);
Expand Down Expand Up @@ -912,6 +965,20 @@ function getProductsForCategory($authentication,$id,$lang='')
'dir' => $pdir,
'images' => $obj->liste_photos($dir,$nbmax=10)
);

//Retreive all extrafield for thirdsparty
// fetch optionals attributes and labels
$extrafields=new ExtraFields($db);
$extralabels=$extrafields->fetch_name_optionals_label('product',true);
//Get extrafield values
$product->fetch_optionals($obj->id,$extralabels);

foreach($extrafields->attribute_label as $key=>$label)
{
$products[$iProduct]=array_merge($products[$iProduct],array('options_'.$key => $product->array_options['options_'.$key]));
}

$iProduct++;
}

}
Expand Down

0 comments on commit 51270ab

Please sign in to comment.