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
$contexte(mixed) Context information
🔧 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 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
$id_lig(string) id de la ligne
$eventHandler(array|null) tableau des événements
↩️ 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)
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
$totals(array) Tableau contenant les données de TVA à traiter
↩️ Returns
(bool) Retourne true en cas de succès, false en cas d'erreur