[resolu] Calcul taxe par ligne PHP
2 participants
- Monrake
- Nombre de messages : 10
Date d'inscription : 21/04/2009
[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 :
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.
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.
- hench
- Nombre de messages : 163
Date d'inscription : 30/12/2008
Fiche d'Entreprise
Nom de l'entreprise:
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)
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
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
- Monrake
- Nombre de messages : 10
Date d'inscription : 21/04/2009
Re: [resolu] Calcul taxe par ligne PHP
Lun 4 Juil 2011 - 8:26
Finalement, j'ai eu ma solution.
Voici mon code :
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);
}
- 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";
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum