Forum d'entraide Acomba
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.

Rejoignez le forum, c’est rapide et facile

Forum d'entraide Acomba
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.
Forum d'entraide Acomba
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Connexion

Aller en bas
avatar
Monrake
Nombre de messages : 10
Date d'inscription : 21/04/2009

[resolu] Calcul taxe par ligne PHP Empty [resolu] Calcul taxe par ligne PHP

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
avatar
hench
Nombre de messages : 163
Date d'inscription : 30/12/2008

Fiche d'Entreprise
Nom de l'entreprise:

[resolu] Calcul taxe par ligne PHP Empty Re: [resolu] Calcul taxe par ligne PHP

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
avatar
Monrake
Nombre de messages : 10
Date d'inscription : 21/04/2009

[resolu] Calcul taxe par ligne PHP Empty Re: [resolu] Calcul taxe par ligne PHP

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";
Contenu sponsorisé

[resolu] Calcul taxe par ligne PHP Empty Re: [resolu] Calcul taxe par ligne PHP

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