Ajout du lien entre la saisie du paiement TVA et la ligne ecriture bancaire

This commit is contained in:
Laurent Destailleur 2007-10-29 21:11:44 +00:00
parent 9b1f74d99d
commit fc047d04c1
4 changed files with 122 additions and 33 deletions

View File

@ -1,6 +1,6 @@
<?php
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2005 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2004-2007 Laurent Destailleur <eldy@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -17,7 +17,6 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Id$
* $Source$
*/
/**
@ -31,6 +30,8 @@ require("../../tva.class.php");
$langs->load("compta");
$id=$_GET["id"];
$mesg = '';
@ -44,14 +45,14 @@ if ($_POST["action"] == 'add' && $_POST["cancel"] <> $langs->trans("Cancel"))
$db->begin();
$tva->label = $langs->trans("VATPayment");
$tva->accountid=$_POST["accountid"];
$tva->paymenttype=$_POST["paiementtype"];
$tva->datev=mktime(12,0,0, $_POST["datevmonth"], $_POST["datevday"], $_POST["datevyear"]);
$tva->datep=mktime(12,0,0, $_POST["datepmonth"], $_POST["datepday"], $_POST["datepyear"]);
$tva->amount=$_POST["amount"];
$tva->label=$_POST["label"];
$ret=$tva->add_payement($user);
$ret=$tva->addPayment($user);
if ($ret > 0)
{
$db->commit();
@ -93,19 +94,24 @@ if ($_GET["action"] == 'create')
print $html->select_date("","datep",'','','','add');
print '</td></tr>';
print '<tr><td>'.$langs->trans("Type").'</td><td>';
$html->select_types_paiements($charge->paiementtype, "paiementtype");
print "</td>\n";
// Label
print '<tr><td>'.$langs->trans("Label").'</td><td><input name="label" size="40" value="'.$langs->trans("VATPayment").'"></td></tr>';
// Amount
print '<tr><td>'.$langs->trans("Amount").'</td><td><input name="amount" size="10" value=""></td></tr>';
if ($conf->banque->enabled)
{
print '<tr><td>'.$langs->trans("Account").'</td><td>';
print '<tr><td>'.$langs->trans("Account").'</td><td>';
$html->select_comptes($charge->accountid,"accountid",0,"courant=1",1); // Affiche liste des comptes courant
print '</td></tr>';
}
print '<tr><td>'.$langs->trans("Type").'</td><td>';
$html->select_types_paiements($charge->paiementtype, "paiementtype");
print "</td>\n";
}
print '<tr><td>'.$langs->trans("Amount").'</td><td><input name="amount" size="10" value=""></td></tr>';
print '<tr><td>&nbsp;</td><td><input type="submit" class="button" value="'.$langs->trans("Save").'"> &nbsp; ';
print '<tr><td>&nbsp;</td><td><input type="submit" class="button" value="'.$langs->trans("Save").'"> &nbsp; ';
print '<input type="submit" class="button" name="cancel" value="'.$langs->trans("Cancel").'"></td></tr>';
print '</table>';
print '</form>';
@ -118,7 +124,52 @@ if ($_GET["action"] == 'create')
/* */
/* ************************************************************************** */
// Aucune action
if ($id)
{
print_fiche_titre($langs->trans("VATPayment"));
$vatpayment = new Tva($db);
if ($vatpayment->fetch($id) > 0)
{
if ($mesg) print $mesg.'<br>';
$h = 0;
$head[$h][0] = DOL_URL_ROOT.'/compta/tva/fiche.php?id='.$tva->id;
$head[$h][1] = $langs->trans('Card');
$head[$h][2] = 'card';
$h++;
dolibarr_fiche_head($head, 'card', $langs->trans("VATPayment"));
print '<table class="border" width="100%">';
print "<tr>";
print '<td>'.$langs->trans("DatePayment").'</td><td>';
print dolibarr_print_date($vatpayment->date);
print '</td></tr>';
print '<tr><td>'.$langs->trans("DateValue").'</td><td>';
print $html->select_date("","datep",'','','','add');
print '</td></tr>';
print '<tr><td>'.$langs->trans("Type").'</td><td>';
$html->select_types_paiements($charge->paiementtype, "paiementtype");
print "</td>\n";
if ($conf->banque->enabled)
{
print '<tr><td>'.$langs->trans("Account").'</td><td>';
$html->select_comptes($charge->accountid,"accountid",0,"courant=1",1); // Affiche liste des comptes courant
print '</td></tr>';
}
print '<tr><td>'.$langs->trans("Amount").'</td><td><input name="amount" size="10" value=""></td></tr>';
}
}
$db->close();

View File

@ -17,7 +17,6 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Id$
* $Source$
*/
/**
@ -32,7 +31,6 @@
/** \class Tva
\brief Classe permettant la gestion de la tva
*/
class Tva
{
var $db;
@ -190,39 +188,44 @@ class Tva
/*
* \brief Ajoute un paiement de TVA
* \param user Object user that insert
* \return int <0 if KO, rowid in tva table if OK
*/
function add_payement($user)
function addPayment($user)
{
global $conf,$langs;
$this->db->begin();
// Validation parameteres
// Check parameters
$this->amount=price2num($this->amount);
if ($conf->banque->enabled)
{
if (! $this->accountid)
{
$this->error=$langs->trans("ErrorFieldRequired",$langs->trans("Account"));
return -3;
}
}
if (! $this->label)
{
$this->error=$langs->trans("ErrorFieldRequired",$langs->transnoentities("Label"));
return -3;
}
if ($this->amount <= 0)
{
$this->error=$langs->trans("ErrorFieldRequired",$langs->trans("Amount"));
$this->error=$langs->trans("ErrorFieldRequired",$langs->transnoentities("Amount"));
return -4;
}
if ($conf->banque->enabled && ! $this->accountid)
{
$this->error=$langs->trans("ErrorFieldRequired",$langs->transnoentities("Account"));
return -5;
}
// Insertion dans table des paiement tva
$sql = "INSERT INTO ".MAIN_DB_PREFIX."tva (datep, datev, amount";
if ($this->note) $sql.=", note";
if ($this->label) $sql.=", label";
$sql.= ") ";
$sql.= ", fk_user_creat";
$sql.= ") ";
$sql.= " VALUES ('".$this->db->idate($this->datep)."',";
$sql.= "'".$this->db->idate($this->datev)."'," . $this->amount;
if ($this->note) $sql.=", '".addslashes($this->note)."'";
if ($this->label) $sql.=", '".addslashes($this->label)."'";
$sql.=", '".$user->id."'";
$sql.= ")";
$result = $this->db->query($sql);
@ -240,9 +243,10 @@ class Tva
$acc = new Account($this->db, $this->accountid);
$bank_line_id = $acc->addline($this->datep, $this->paymenttype, $this->label, -abs($this->amount), '', '', $user);
// Mise a jour fk_bank dans llx_paiementtva. On connait ainsi la ligne de tva qui a généré l'écriture bancaire
if ($bank_line_id) {
// $tva->update_fk_bank($bank_line_id);
// Mise a jour fk_bank dans llx_tva. On connait ainsi la ligne de tva qui a généré l'écriture bancaire
if ($bank_line_id)
{
$this->update_fk_bank($bank_line_id);
}
// Mise a jour liens (pour chaque charge concernée par le paiement)
@ -273,6 +277,27 @@ class Tva
return -1;
}
}
/**
* \brief Mise a jour du lien entre le paiement tva et la ligne générée dans llx_bank
* \param id_bank Id compte bancaire
* \return int <0 if KO, >0 if OK
*/
function update_fk_bank($id_bank)
{
$sql = 'UPDATE llx_tva set fk_bank = '.$id_bank;
$sql.= ' WHERE rowid = '.$this->id;
$result = $this->db->query($sql);
if ($result)
{
return 1;
}
else
{
dolibarr_print_error($this->db);
return -1;
}
}
}
?>

View File

@ -53,6 +53,14 @@ delete from llx_adherent_type where libelle IS NULL;
alter table llx_adherent_type modify libelle varchar(50) NOT NULL;
alter table llx_tva add fk_bank integer NOT NULL;
alter table llx_tva add fk_user_creat integer;
alter table llx_tva add fk_user_modif integer;
-- V4.1 UPDATE llx_tva as t set fk_bank = (SELECT IFNULL(MIN(rowid),0) FROM llx_bank as b WHERE b.datev = t.datev AND b.amount = -t.amount AND b.label like 'R%glement TVA') WHERE t.fk_bank = 0;
-- V4.1 UPDATE llx_tva as t set fk_user_creat = (SELECT MIN(fk_user_author) FROM llx_bank as b WHERE b.datev = t.datev AND b.amount = -t.amount AND b.label like 'R%glement TVA') WHERE t.fk_user_creat IS NULL;
-- Extention de la gestion des catégories
alter table llx_categorie ADD type int not null default '0';
-- V4 ALTER TABLE llx_categorie DROP INDEX uk_categorie_ref;
@ -901,6 +909,8 @@ ALTER TABLE llx_element_contact ADD INDEX idx_element_contact_fk_socpeople (fk_s
-- Supprimme orphelins pour permettre montée de la clé
-- V4 DELETE llx_fichinter FROM llx_fichinter LEFT JOIN llx_societe ON llx_fichinter.fk_soc = llx_societe.rowid WHERE llx_societe.rowid IS NULL;
ALTER TABLE llx_societe ADD COLUMN supplier_account varchar(32) after fournisseur;
drop table if exists llx_c_barcode;

View File

@ -28,5 +28,8 @@ create table llx_tva
datev date, -- date de valeur
amount real NOT NULL DEFAULT 0,
label varchar(255),
note text
note text,
fk_bank integer NOT NULL,
fk_user_creat integer, -- utilisateur qui a créé l'info
fk_user_modif integer -- utilisateur qui a modifié l'info
)type=innodb;