FactureManager

🔧 __construct

function __construct($id_type, $id_objet, $contexte = "",$handleGlobalEvent = null) { parent::__construct($id_type, $id_objet, $contexte, $handleGlobalEvent); }

🔧 __construct

function __construct($id_type, $id_objet, $contexte = "",$handleGlobalEvent = null) { parent::__construct($id_type, $id_objet, $contexte, $handleGlobalEvent); }

🔧 __construct

Constructor
function __construct($id_type, $id_objet, $contexte = "",$handleGlobalEvent = null) { parent::__construct($id_type, $id_objet, $contexte, $handleGlobalEvent); }

⚙️ Parameters

⚠️ Throws


🔧 initialize

Initialize the document
function initialize($contexte, $handleGlobalEvent) { try { $this->eventHandler = isset($handleGlobalEven) ? $this->handleFactureEvent($handleGlobalEvent) : []; $this->facture = $this->document; // on force l'attribution de la facture à un groupe - quoi qu'il se passe - le groupe de l'utilisateur connecté. $this->forceGroupeFacture(); $this->client = fwc7_data_objet_att('',$this->getModuleCodes()["setting_client_id_type_"],$this->document[$this->getModuleCodes()['id_client']],[],true) ?? []; if(empty($this->client)){ global $global_message; $global_message->message_warning("Le client est vide"); } // ... (truncated)

⚙️ Parameters


🔧 forceGroupeFacture

function forceGroupeFacture():void{ if($this->facture[$this->getModuleCodes()['id_groupe_franchise']] == '' || is_null($this->facture[$this->getModuleCodes()['id_groupe_franchise']])){ fwc7_modify_att_edit('',$this->id_type,$this->id_objet,[ $this->getModuleCodes()['id_groupe_franchise']=>$this->identification['intersectGroup'][0] ],'edit','Mise à jour du groupe Franchise'); // reload this-facture. $this->facture = fwc7_data_objet_att('',$this->id_type,$this->id_objet,[],true); } }

↩️ Returns

(void)

🔧 getFactureCommissionRate

goal, récupère sur la cooperative associé au Devis, le taux de comission à appliquer sur la Facture
function getFactureCommissionRate() { $cooperative = $this->getCooperative(); $is_commission_applied_field = fwp7_param_template_att_get_number('', $this->getModuleCodes()["setting_devis_id_"], 'apply_commission'); $is_commission_applied = boolval($cooperative[$is_commission_applied_field]); $id_commission_field = fwp7_param_template_att_get_number('', $this->getModuleCodes()["setting_devis_id_"], 'taux_commission'); if($is_commission_applied){ $commission_rate = $cooperative[$id_commission_field] ? floatval($cooperative[$id_commission_field]) : 0; }else{ $commission_rate = 0; } // ... (truncated)

↩️ Returns

(float|int)

🔧 upsertDocumentLine

Insertion / mise à jour d'une ligne à la facture
function upsertDocumentLine(string $id_lig, array $eventHandler=null): array { // On récupère l'id du produit de la ligne $idProduitLigne = $this->lignesDeProduit[$id_lig][$this->getModuleCodes()["produit_facture"]]; // Il faut qu'un produit soit sélectionné if(isset($idProduitLigne) && $idProduitLigne !== "") { // Si un eventHandler est défini alors on le sauvegarde dans l'attribut eventHandler if(isset($eventHandler))$this->eventHandler = $eventHandler; // Construction du tableau des champs à renvoyer. $fields_to_set = $this->setLineFields_byModuleCode($this->getModuleCodes(),$this->line_field_inputs); // True si c'est la ligne en cours de modification, false sinon $thisLineEventHandler = ((int)$id_lig == (int)array_key_first($this->eventHandler['this_line']) || (!isset($this->eventHandler['this_line']) && $this->eventHandler['isNewFactureFromCommande']) || $this->eventHandler['isNewFactureFromCommande']); $LigneFacture = new FactureLine($this->identification, $this->lignesDeProduit[$id_lig], $id_lig, $this->id_type, $this->id_objet, $this->getModuleCodes()); $current_line = $LigneFacture->getlineData(); // Organisation des valeurs pour réaliser la persistence au format Eteko. $line_value = $LigneFacture->setLineWithValues([], $idProduitLigne); // ... (truncated)

⚙️ Parameters

↩️ Returns

(array) Avec les informations sur la facture (totaux)

🔧 transformFacture_ProductLine

Insertion / mise à jour d'une ligne à la facture
function transformFacture_ProductLine(array $fields_to_set, array $line_value, string $produit_id):array{ // il faut transformer la table en un truc persistable en bdd eteko. $res = []; $designationParent = $line_value['produit_franchiseur']['designation_original'].'<br />'.html_entity_decode($line_value['produit_franchiseur']['description_produit']); $designationParent = $designationParent ?? "f"; $designationEnfant = $line_value['produit_franchiseur']['designation_original'].'<br />'.html_entity_decode($line_value['produit_franchiseur']['description_produit']); $designationEnfant = $designationEnfant ?? "a"; $prod_txtva = floatval($line_value['produit_franchiseur']['prod_txtva']); foreach ($fields_to_set as $lig_key => $field) { // On récupère l'unité du produit if($field == 'unite_ligne_de_facture' && $lig_key !=='' ){ $res['values'][$lig_key]= ucfirst($line_value['produit_franchise']['unite_produit']); // ... (truncated)

⚙️ Parameters

↩️ Returns

(array)

🔧 getFieldsToSum

Get fields to sum for totals calculation
function getFieldsToSum(): array { return [ // set des totaux 'att_ttc_remise'=> 'document_calcul_euro_ttc_discount', // att7 'att_calcul_ht_remise'=>'document_calcul_euro_ttc_ht_discount', // att40 'att_remise_totht' => 'document_amount_total_discounted_ht', // att37 'att_remise_tottva' => 'document_amount_total_discounted_tva', // att39 'att_remise_totttc' => 'document_amount_total_discounted_ttc', // att38 'att_totht' => 'document_total_ht', 'att_tottva' => 'document_total_tva', 'att_totttc' => 'document_total_ttc', ]; }

↩️ Returns

(array) Fields to sum

🔧 applyCommissionRate

application d'une commission sur les totaux
function applyCommissionRate($lineItem, $commission_rate):lineItem_callback{ // commission rate to the total $lineItem->total->total_ht *= $commission_rate; $lineItem->total->tva_amount *= $commission_rate; $lineItem->total->total_ttc *= $commission_rate; // commission rate total_discounted $lineItem->total_discounted->total_ht *= $commission_rate; $lineItem->total_discounted->tva_amount *= $commission_rate; $lineItem->total_discounted->total_ttc *= $commission_rate; // Rounds $lineItem->total->total_ht = round($lineItem->total->total_ht, 2); $lineItem->total->tva_amount = round($lineItem->total->tva_amount, 2); $lineItem->total->total_ttc = round($lineItem->total->total_ttc, 2); // ... (truncated)

↩️ Returns

(void)

🔧 checkInvoicing_Metrics

retourne un entier qui indique le pourcentage d'avancement de la facturation d'une Commande
function checkInvoicing_Metrics():int{ return 100; }

↩️ Returns

(int)

🔧 checkPayment_Metrics

retourne un entier qui indique le pourcentage d'avancement deq paiementq de la facture .
function checkPayment_Metrics():array{ // check des lignes de règlements $list_rgl_facs = $this->reglements; $montant_regle = 0; foreach ($list_rgl_facs as $rgl_fac) { $montant_regle += $rgl_fac[$this->getModuleCodes()["setting_reglement_lig_montant"]]; } $est_reglee = 0; $reste=abs( $this->forceReload_Facture()[$this->getModuleCodes()['att_totttc']]-$montant_regle); if ($reste<1) {$est_reglee=1;} return [ // ... (truncated)

↩️ Returns

(int)

🔧 checkInvoicing_validationHandshake

goal : controle de cohérence d'une facture avant sa validation
function checkInvoicing_validationHandshake():bool { // fresh datas $this->facture = fwc7_data_objet_att('',$this->id_type,$this->id_objet,'',true); // check mandatory fields firsts. $list_mandatory_fields =[ 'nom_client', 'adr_fac', 'att_prefix', 'att_date_dmd', 'att_totht', 'att_delai_rgl', 'att_mode_rgl', // ... (truncated)

↩️ Returns

(void)

🔧 submit_VAT_Totals

Soumet et met à jour les totaux de TVA Cette fonction gère les lignes de TVA d'un document. Pour chaque taux de TVA standard (0%, 10%, 20%), elle vérifie si une ligne existe déjà dans le document et la crée, met à jour ou supprime selon le cas. La fonction consolide également les taux de TVA dupliqués en additionnant leurs montants. Le comportement est le suivant : - Si un taux de TVA a un montant > 0 dans les totaux : créer/restaurer et mettre à jour la ligne - Si un taux de TVA a un montant = 0 ou n'apparaît pas dans les totaux : supprimer la ligne Format attendu : [ 'tvas' => [ [ 'vat_rate' => '20', // Taux de TVA (0, 10, 20) 'amount_ht' => 1000, // Montant HT 'vat_amount_in_euro' => 200 // Montant de TVA ], ... ]
function submit_VAT_Totals(array $totals,$eventHandler = null): bool { // Recap TVA tlig = ?? $codes = $this->getModuleCodes(); $tlig_recap_tva = $codes["ligne_de_tvas"]; $lig_tva_tx = $codes["tva_tx"]; $lig_montant_ht_base = $codes["tva_base"]; $lig_montant_tva = $codes["tva_mnt"]; // TVA rates (0%, 10%, 20%) $tva_rates = ['0', '10', '20']; try { // Consolider les valeurs de TVA par rapport aux triages $consolidated_tvas = []; foreach ($totals['tvas'] as $triage) { // ... (truncated)

⚙️ Parameters

↩️ Returns

(bool) Retourne true en cas de succès, false en cas d'erreur

🔧 generateInfosDocument

Generate document info
function generateInfosDocument(): string { // TODO: Implement generateInfosDocument() method. return ''; }

↩️ Returns

(string) Formatted document info

🔧 generateFormattedAddress

Generate formatted address
function generateFormattedAddress(): string { // TODO: Implement generateFormattedAddress() method. return ''; }

↩️ Returns

(string) Formatted address

🔧 getAllContacts

Get all contacts
function getAllContacts() { // TODO: Implement getAllContacts() method. }

↩️ Returns

(array) List of contacts

🔧 handleInterlocuteur

Get l'interlocuteur conerné
function handleInterlocuteur() { // TODO: Implement handleInterlocuteur() method. }

↩️ Returns

(string) Interlocutor ID

🔧 getEntite

Get les informations de l'entité de type franhcise/agence concerné par l'obje
function getEntite() { // TODO: Implement getEntite() method. }

↩️ Returns

(array) Entity information