Acomba (Forum)
Pourquoi ne pas devenir membre du forum ?

Identifiez-vous ou Inscrivez-vous afin d'accéder à l'inrégralité du forum:
Accès à toutes les catégories du forum,
Entraide entre les 6 500 membres, et ce nombre s'accroît quotidiennement!

Notez que ce forum est indépendant de la société Acceo Solutions, éditrice du logiciel Acomba.
Connexion

Récupérer mon mot de passe


[resolu] Calcul taxe par ligne PHP

Voir le sujet précédent Voir le sujet suivant Aller en bas

[resolu] Calcul taxe par ligne PHP

Message  Monrake le Ven 10 Juin 2011 - 11:53

Bonjour,

Je monte un module en PHP pour créer des factures dans Acomba. Mon seul problème est qu'un client peut avoir une ligne ou la taxe doit se calculer et une ligne ou la taxe ne doit pas se calculer. Mon but est de faire ça dans la même facture pour éviter de générer trop de facture.

Voici mon code actuel :
Code:
ini_set("display_errors", "On");
error_reporting(E_ALL|E_WARNING|E_STRICT);

$conn = odbc_connect('Driver={Acomba ODBC Driver};AcombaExe=C:\Fortune_humatech;Dbq=c:\Acomba\Deshumanizer','SUPERVISOR','');

odbc_exec($conn, "BEGIN_TRANSACTION_IN");

$req = 'SELECT * FROM Customer WHERE CuNumber=\'103-122\'';
$resultats = odbc_exec($conn, $req);
$data = odbc_fetch_array($resultats);

$req = "INSERT INTO TransactionHeader (InInvoiceType, InReference, InDescription, InCurrentDay, InTransactionActive, InCustomerSupplierNumber, InTaxGroupCP, TANumLines) VALUES (1, 'test taxe', 'test taxe', 1, 1, '103-122',". $data['CuTaxGroupCP'].", 2)";


odbc_exec($conn, $req);

$req = "UPDATE TransactionDetail SET ILType = 1, ILDescription = 'avec taxe', ILSellingPrice = 50, ILProductGroupCP = 1, ILInvoicedQty = 2,ILLineNumber = 1 WHERE TaNum=1";

odbc_exec($conn, $req);

$req = "UPDATE TransactionDetail SET ILType = 1, ILDescription = 'sans taxe', ILSellingPrice = 50, ILProductGroupCP = 1, ILInvoicedQty = 2,ILLineNumber = 2,ILTaxLineRate1=5,ILTaxLineRate2=5 WHERE TaNum=2";

odbc_exec($conn, $req);

odbc_exec($conn, "CALCULATE_TAXES");

odbc_exec($conn, "END_TRANSACTION_IN");

odbc_close($conn);

?>

J'ai essayé de jouer avec ILTaxLineRate et ILUnitTaxAmount mais dans tous les cas, mes 2 taxes se calculent pareillent.

Si vous avez une solution, se serait fortement apprécié.

Merci.


Dernière édition par Monrake le Jeu 20 Oct 2011 - 15:18, édité 1 fois

Monrake

Nombre de messages : 10
Date d'inscription : 21/04/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [resolu] Calcul taxe par ligne PHP

Message  hench le Jeu 30 Juin 2011 - 2:03

Salut

La taxe est aussi définissable à un produit avec une exception de taxe ou spécifier que la taxe est déjà incluse dans le prix (PrTaxesIncluded)

Code:

PrTaxesIncluded  ?

Indique si les taxes peuvent être incluses dans le prix du produit ( <> 0 ) ou non ( = 0 ).

Pour ce qui est du taux de taxe par ligne de transaction, il est bien important de comprendre les deux paramètres d'entrées qui sont :

1. Le numéro de la ligne
2. Le numéro du taux de taxe

Vous pourriez forcer la dose et spécifier un taux de taxe de 0 % pour les lignes pour lesquelles vous ne souhaitez pas ajouter un montant de taxe. C'est une belle façon de tricher!

Ce ne sont que des idées, je n'ai pas testé, et peut-être qu'il faudra tricoter pour parvenir à un résultat!


On peut appliquer jusqu'à 5 taux de taxes différents pour une taxe.

Bon succès,

hench

hench

Nombre de messages : 163
Date d'inscription : 30/12/2008

Fiche d'Entreprise
Nom de l'entreprise:

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [resolu] Calcul taxe par ligne PHP

Message  Monrake le Lun 4 Juil 2011 - 8:26

Finalement, j'ai eu ma solution.

Voici mon code :
Code:
if ($_POST["action"] == "acomba") {
  $conn = odbc_connect('Driver={Acomba ODBC Driver};AcombaExe=C:\Fortune_humatech;Dbq=c:\Acomba\Deshumanizer','SUPERVISOR','');
  $req = 'SELECT * FROM TaxHeader WHERE TaNumber=\'T.P.S.\'';
  $resultats = odbc_exec($conn, $req);
  $data = odbc_fetch_array($resultats);
  $ProductCPTPS = $data['RecCardPos'];
  $CharterCPTPS = $data['TaCollectedTaxesCharterCP'];
  $req = 'SELECT * FROM TaxHeader WHERE TaNumber=\'T.V.Q.\'';
  $resultats = odbc_exec($conn, $req);
  $data = odbc_fetch_array($resultats);
  $ProductCPTVQ = $data['RecCardPos'];
  $CharterCPTVQ = $data['TaCollectedTaxesCharterCP'];
     
  $result = mysql_query("Select * From tblfacture Order by Date, IDFacture, Nom ",$db1);
  While ($val = mysql_fetch_array($result)){
    $Projet = "projet".$val["IDFacture"];
    if ($_POST[$Projet] == "on" and (empty($val["TransfertAcomba"]) or $val["TransfertAcomba"] == "")) {
      $IDClient = $val["IDClient"];
      $IDFacture = $val["IDFacture"];
      $SousTotalTaxe = $val["SousTotalTaxe"];
      $SousTotal = $val["SousTotal"];
      $TPS = $val["TPS"];
      $TVQ = $val["TVQ"];
         
      odbc_exec($conn, "BEGIN_TRANSACTION_IN");
     
      $req = 'SELECT * FROM Customer WHERE CuNumber=\'".$IDClient."\'';
      $resultats = odbc_exec($conn, $req);
      $data = odbc_fetch_array($resultats);
      $GroupeTaxe = $data['CuTaxGroupCP'];
      if ($GroupeTaxe == "") { $GroupeTaxe = 0; }
         
      if ($SousTotalTaxe <> 0 and $SousTotal <> 0) {
        $req = "INSERT INTO TransactionHeader (InInvoiceType, InReference, InDescription, InCurrentDay, InTransactionActive, InCustomerSupplierNumber, InTaxGroupCP, TANumLines) VALUES (1, 'Facture automatique ".$IDFacture."', 'Facture automatique ".$IDFacture."', 1, 1, '".$IDClient."',".$GroupeTaxe.", 4)";
      }
      else {
        if ($SousTotalTaxe <> 0) {
          $req = "INSERT INTO TransactionHeader (InInvoiceType, InReference, InDescription, InCurrentDay, InTransactionActive, InCustomerSupplierNumber, InTaxGroupCP, TANumLines) VALUES (1, 'Facture automatique".$IDFacture."', 'Facture automatique ".$IDFacture."', 1, 1, '".$IDClient."',".$GroupeTaxe.", 3)";
        }
        else {
          $req = "INSERT INTO TransactionHeader (InInvoiceType, InReference, InDescription, InCurrentDay, InTransactionActive, InCustomerSupplierNumber, InTaxGroupCP, TANumLines) VALUES (1, 'Facture automatique".$IDFacture."', 'Facture automatique ".$IDFacture."', 1, 1, '".$IDClient."',".$GroupeTaxe.", 1)";
        }
      }
      odbc_exec($conn, $req);
     
      if ($SousTotalTaxe <> 0 and $SousTotal <> 0) {
        $req = "UPDATE TransactionDetail SET ILType = 1, ILDescription = 'Honoraire avec taxe', ILSellingPrice = ".$SousTotalTaxe.", ILProductGroupCP = 1, ILInvoicedQty = 1,ILLineNumber = 1 WHERE TaNum=1";
        odbc_exec($conn, $req);
     
        $req = "UPDATE TransactionDetail SET ILType = 1, ILDescription = 'Honoraire sans taxe', ILSellingPrice = ".$SousTotal.", ILProductGroupCP = 1, ILInvoicedQty = 1,ILLineNumber = 2 WHERE TaNum=2";
        odbc_exec($conn, $req);
       
        $req = "UPDATE TransactionDetail SET ILType = 8, ILProductNumber= 'T.P.S.', ILTotalAmount = ".$TPS.", ILProductCP = ".$ProductCPTPS.",ILCharterCP = ".$CharterCPTPS.", ILLineNumber = 991 WHERE TaNum=3";
        odbc_exec($conn, $req);
            
            $req = "UPDATE TransactionDetail SET ILType = 8, ILProductNumber = 'T.V.Q.',  ILTotalAmount = ".$TVQ.", ILProductCP = ".$ProductCPTVQ.", ILCharterCP = ".$CharterCPTVQ.", ILLineNumber = 992 WHERE TaNum=4";
        odbc_exec($conn, $req);
      }
      else {
        if ($SousTotalTaxe <> 0) {
          $req = "UPDATE TransactionDetail SET ILType = 1, ILDescription = 'Honoraire avec taxe', ILSellingPrice = ".$SousTotalTaxe.", ILProductGroupCP = 1, ILInvoicedQty = 1,ILLineNumber = 1 WHERE TaNum=1";
          odbc_exec($conn, $req);
         
          $req = "UPDATE TransactionDetail SET ILType = 8, ILProductNumber= 'T.P.S.', ILTotalAmount = ".$TPS.", ILProductCP = ".$ProductCPTPS.",ILCharterCP = ".$CharterCPTPS.", ILLineNumber = 991 WHERE TaNum=2";
          odbc_exec($conn, $req);
              
              $req = "UPDATE TransactionDetail SET ILType = 8, ILProductNumber = 'T.V.Q.',  ILTotalAmount = ".$TVQ.", ILProductCP = ".$ProductCPTVQ.", ILCharterCP = ".$CharterCPTVQ.", ILLineNumber = 992 WHERE TaNum=3";
          odbc_exec($conn, $req);
        }
        else {
          $req = "UPDATE TransactionDetail SET ILType = 1, ILDescription = 'Honoraire sans taxe', ILSellingPrice = ".$SousTotal.", ILProductGroupCP = 1, ILInvoicedQty = 1,ILLineNumber = 1 WHERE TaNum=1";
          odbc_exec($conn, $req);
        }
      }
     
      odbc_exec($conn, "END_TRANSACTION_IN");
     
      $req = 'SELECT * FROM LastTransactionHeader';
      $resultats = odbc_exec($conn, $req);
      $data = odbc_fetch_array($resultats);
     
      $FactAcomba = $data['InInvoiceNumber'];
      $query = "UPDATE tblfacture SET TransfertAcomba ='$FactAcomba' WHERE IDFacture='$IDFacture'";
      mysql_query("$query",$db1) or die(mysql_error());
    }
  }
  odbc_close($conn);
}
J'ai désactivé le calcul automatique des taxes et je les spécifies manuellement en ajoutant 2 lignes de types 8 comme celle ci :
Code:
$req = "UPDATE TransactionDetail SET ILType = 8, ILProductNumber= 'T.P.S.', ILTotalAmount = ".$TPS.", ILProductCP = ".$ProductCPTPS.",ILCharterCP = ".$CharterCPTPS.", ILLineNumber = 991 WHERE TaNum=2";
          odbc_exec($conn, $req);
              
              $req = "UPDATE TransactionDetail SET ILType = 8, ILProductNumber = 'T.V.Q.',  ILTotalAmount = ".$TVQ.", ILProductCP = ".$ProductCPTVQ.", ILCharterCP = ".$CharterCPTVQ.", ILLineNumber = 992 WHERE TaNum=3";

Monrake

Nombre de messages : 10
Date d'inscription : 21/04/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: [resolu] Calcul taxe par ligne PHP

Message  Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum