DocumentLine

🔧 __construct

function __construct($userIdentification,array $lineData ,string $this_id_line, string $id_type, string $id_objet, $module_codes_document){ $this->identification = $userIdentification; $this->id_objet_type_table_produit = $module_codes_document['setting_produit_id_type_']; $this->id_type = $id_type; $this->id_objet = $id_objet; $this->lineData = $lineData; $this->product_id = $lineData; }

🔧 __construct

function __construct($userIdentification,array $lineData ,string $this_id_line, string $id_type, string $id_objet, $module_codes_document){ $this->identification = $userIdentification; $this->id_objet_type_table_produit = $module_codes_document['setting_produit_id_type_']; $this->id_type = $id_type; $this->id_objet = $id_objet; $this->lineData = $lineData; $this->product_id = $lineData; }

🔧 calculateUnitPriceLineHT

on veut que le prix de vente unitaire (PV) soit celui indiqué par le franchisé si il en a un valeur à modifier : "lig2": { "ordre": 5, "titre": "Prix unitaire" } du Produit on récupère : Dans le cas d'un utilisateur avec profil Franchise | Commercial - on prendre le PV franchisé si il est rempli == att15 - sinon c'est le PV conseillé franchiseur qui prends le relai == att7 Si c'est un profil Franchiseur | SuperAdmin - alors c'est son prix de vente conseillé == att7 conernant le prix d'achat : le franchisé récupère le prix d'achat franchisé du parent (att8) le franchiseur récupére le prix d'achat fournisseru du produit parent (att6))
function calculateUnitPriceLineHT(array $userInfos, $childProduct, array $parentProduct): float { if($userInfos['isFranchise'] || $userInfos['isCommercial']){ if(!empty($childProduct['lig_produit_prix_ht_franchise'])){ return (float)$childProduct['lig_produit_prix_ht_franchise']; } else { return (float)$parentProduct['lig_produit_prix_vente_conseille_franchise']; } } else if ($userInfos['isFranchiseur'] || $userInfos['isSuperAdmin']){ return (float)$parentProduct['lig_produit_prix_vente_conseille_franchise']; } else { // ... (truncated)

⚙️ Parameters

↩️ Returns

(string)

🔧 getChildProductSelected

function getChildProductSelected($id_produit,$id_objet_type_table_produit): array { try { if (empty($id_produit)) { return []; } // Fetch child product data $this_product_data = fwc7_data_objet_att('', $id_objet_type_table_produit, $id_produit,[],'true', 1); $res = []; foreach ($this->getProductModuleCodes($id_objet_type_table_produit) as $key => $item_code) { $res[$key]= $this_product_data[$item_code]; } // ... (truncated)

↩️ Returns

(mixed)

🔧 getParentProduct

function getParentProduct(string $id_produit, string $id_objet_type_table_produit): array { try { if (empty($id_produit)) { return []; } $this_product_data = fwc7_data_objet_att('', $id_objet_type_table_produit, $id_produit,[],'true', 1); $res = []; foreach ($this->getProductModuleCodes($id_objet_type_table_produit) as $key => $item_code) { $res[$key]= $this_product_data[$item_code]; } // ... (truncated)

↩️ Returns

(array)

🔧 setLineWithValues

function setLineWithValues(array $values, string $id_produit): ?array { $child_product = $this->getChildProductSelected($id_produit, $this->id_objet_type_table_produit); $parent_product = $child_product["id_parent_product"] !== null ? $this->getParentProduct($child_product["id_parent_product"],$this->id_objet_type_table_produit): $this->getParentProduct($id_produit,$this->id_objet_type_table_produit); $unit_price_ht = $this->calculateUnitPriceLineHT($this->identification, $child_product,$parent_product); $buying_price_ht = $this->calculateBuyingPriceLineHT($this->identification,$parent_product); if($id_produit){ return [ 'child_product' => $child_product, 'buying_price_line_ht'=> $buying_price_ht, 'unit_price_line_ht'=> $unit_price_ht, // ... (truncated)

⚙️ Parameters

↩️ Returns

(array)

🔧 persitLineWithValues

function persitLineWithValues(array $values, string $id_tlig, string $id_lig): array { fwc7_modify_lig_edit('',$this->id_type,$this->id_objet,$id_tlig,$id_lig,$values,'edit'); fwc7_data_objet_lig('',$this->id_type,$this->id_objet,$id_tlig,$id_lig,[],'true'); try { return [ "success"=>true ]; } catch (exception $e) { } }

⚙️ Parameters

↩️ Returns

(array)

🔧 setFields

function setFields(array $modulesCodesfromObje, array $modulesCodeInput): array { // TODO: Implement setFields() method. return [ "lig1"=> 'coucou' ]; }

⚙️ Parameters

↩️ Returns

(array)

🔧 getProductModuleCodes

function getProductModuleCodes(string $id_type_produit): array { $module_codes = fwp7_param_objet_att_list('', $id_type_produit, 'true'); $result = []; // tous les modules des attributs du type foreach ($module_codes as $item) { if (!empty($item['module_code'])) { $result[$item['module_code']] = $item['numero']; } } return $result; }

↩️ Returns

(array)

🔧 calculateTotals_Line

Calculate totals for a line item
function calculateTotals_Line( string $quantity, string $unitPrice, string $tvaRate, string $discount_type, $discount_value, string $discount_applies_to = 'TTC' ): lineItem_callback { // check des entrées $this->validateInput($quantity, 'quantity'); $this->validateInput($unitPrice, 'unitPrice'); $this->validateInput($tvaRate, 'tvaRate'); // Validation du type de remise if (!in_array($discount_type, ['pourcentage', 'euro', 'valeur'])) { if($discount_type ==""){ $discount_type = 'euro'; } else { throw new \InvalidArgumentException("Type de remise invalide: {$discount_type}. Doit être pourcentage ou euros'."); // ... (truncated)

⚙️ Parameters

↩️ Returns

(lineItem_callback) The calculated line item