diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index 56c1434feac03a3432c5607b2cce522d40828d71..5dcc2332015e9ef945e0476fdda5312b8c31cd43 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -8,6 +8,7 @@ * Copyright (C) 2011 Remy Younes <ryounes@gmail.com> * Copyright (C) 2012 Marcos García <marcosgdf@gmail.com> * Copyright (C) 2012 Christophe Battarel <christophe.battarel@ltairis.fr> + * Copyright (C) 2011-2012 Alexandre Spangaro <alexandre.spangaro@gmail.com> * * 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 @@ -136,7 +137,7 @@ $tabsql[6] = "SELECT a.id as rowid, a.code as code, a.libelle AS libelle, a.t $tabsql[7] = "SELECT a.id as rowid, a.code as code, a.libelle AS libelle, a.deductible, p.code as pays_code, p.libelle as pays, a.fk_pays as pays_id, a.active FROM ".MAIN_DB_PREFIX."c_chargesociales AS a, ".MAIN_DB_PREFIX."c_pays as p WHERE a.fk_pays=p.rowid and p.active=1"; $tabsql[8] = "SELECT id as rowid, code, libelle, active FROM ".MAIN_DB_PREFIX."c_typent"; $tabsql[9] = "SELECT code_iso as code, label as libelle, unicode, active FROM ".MAIN_DB_PREFIX."c_currencies"; -$tabsql[10]= "SELECT t.rowid, t.taux, t.localtax1_type, t.localtax1, t.localtax2_type, t.localtax2, p.libelle as pays, p.code as pays_code, t.fk_pays as pays_id, t.recuperableonly, t.note, t.active, t.accountancy_code FROM ".MAIN_DB_PREFIX."c_tva as t, llx_c_pays as p WHERE t.fk_pays=p.rowid"; +$tabsql[10]= "SELECT t.rowid, t.taux, t.localtax1_type, t.localtax1, t.localtax2_type, t.localtax2, p.libelle as pays, p.code as pays_code, t.fk_pays as pays_id, t.recuperableonly, t.note, t.active, t.accountancy_code_sell, t.accountancy_code_buy FROM ".MAIN_DB_PREFIX."c_tva as t, llx_c_pays as p WHERE t.fk_pays=p.rowid"; $tabsql[11]= "SELECT t.rowid as rowid, element, source, code, libelle, active FROM ".MAIN_DB_PREFIX."c_type_contact AS t"; $tabsql[12]= "SELECT c.rowid as rowid, code, sortorder, c.libelle, c.libelle_facture, nbjour, fdm, decalage, active FROM ".MAIN_DB_PREFIX.'c_payment_term AS c'; $tabsql[13]= "SELECT id as rowid, code, c.libelle, type, active FROM ".MAIN_DB_PREFIX."c_paiement AS c"; @@ -188,7 +189,7 @@ $tabfield[6] = "code,libelle,type,position"; $tabfield[7] = "code,libelle,pays_id,pays,deductible"; $tabfield[8] = "code,libelle"; $tabfield[9] = "code,libelle,unicode"; -$tabfield[10]= "pays_id,pays,taux,recuperableonly,localtax1_type,localtax1,localtax2_type,localtax2,accountancy_code,note"; +$tabfield[10]= "pays_id,pays,taux,recuperableonly,localtax1_type,localtax1,localtax2_type,localtax2,accountancy_code_sell,accountancy_code_buy,note"; $tabfield[11]= "element,source,code,libelle"; $tabfield[12]= "code,libelle,libelle_facture,nbjour,fdm,decalage"; $tabfield[13]= "code,libelle,type"; @@ -214,7 +215,7 @@ $tabfieldvalue[6] = "code,libelle,type,position"; $tabfieldvalue[7] = "code,libelle,pays,deductible"; $tabfieldvalue[8] = "code,libelle"; $tabfieldvalue[9] = "code,libelle,unicode"; -$tabfieldvalue[10]= "pays,taux,recuperableonly,localtax1_type,localtax1,localtax2_type,localtax2,accountancy_code,note"; +$tabfieldvalue[10]= "pays,taux,recuperableonly,localtax1_type,localtax1,localtax2_type,localtax2,accountancy_code_sell,accountancy_code_buy,note"; $tabfieldvalue[11]= "element,source,code,libelle"; $tabfieldvalue[12]= "code,libelle,libelle_facture,nbjour,fdm,decalage"; $tabfieldvalue[13]= "code,libelle,type"; @@ -240,7 +241,7 @@ $tabfieldinsert[6] = "code,libelle,type,position"; $tabfieldinsert[7] = "code,libelle,fk_pays,deductible"; $tabfieldinsert[8] = "code,libelle"; $tabfieldinsert[9] = "code_iso,label,unicode"; -$tabfieldinsert[10]= "fk_pays,taux,recuperableonly,localtax1_type,localtax1,localtax2_type,localtax2,accountancy_code,note"; +$tabfieldinsert[10]= "fk_pays,taux,recuperableonly,localtax1_type,localtax1,localtax2_type,localtax2,accountancy_code_sell,accountancy_code_buy,note"; $tabfieldinsert[11]= "element,source,code,libelle"; $tabfieldinsert[12]= "code,libelle,libelle_facture,nbjour,fdm,decalage"; $tabfieldinsert[13]= "code,libelle,type"; @@ -344,45 +345,45 @@ $elementList = array(); $sourceList=array(); if ($id == 11) { - $langs->load("orders"); - $langs->load("contracts"); - $langs->load("projects"); - $langs->load("propal"); - $langs->load("bills"); - $langs->load("interventions"); - $elementList = array( - 'commande' => $langs->trans('Order'), - 'invoice_supplier' => $langs->trans('SupplierBill'), - 'order_supplier' => $langs->trans('SupplierOrder'), - 'contrat' => $langs->trans('Contract'), - 'project' => $langs->trans('Project'), - 'project_task' => $langs->trans('Task'), - 'propal' => $langs->trans('Proposal'), - 'facture' => $langs->trans('Bill'), - 'facture_fourn' => $langs->trans('SupplierBill'), - 'fichinter' => $langs->trans('InterventionCard') - ); - if (! empty($conf->global->MAIN_SUPPORT_CONTACT_TYPE_FOR_THIRDPARTIES)) $elementList["societe"] = $langs->trans('ThirdParty'); - $sourceList = array( - 'internal' => $langs->trans('Internal'), - 'external' => $langs->trans('External') - ); + $langs->load("orders"); + $langs->load("contracts"); + $langs->load("projects"); + $langs->load("propal"); + $langs->load("bills"); + $langs->load("interventions"); + $elementList = array( + 'commande' => $langs->trans('Order'), + 'invoice_supplier' => $langs->trans('SupplierBill'), + 'order_supplier' => $langs->trans('SupplierOrder'), + 'contrat' => $langs->trans('Contract'), + 'project' => $langs->trans('Project'), + 'project_task' => $langs->trans('Task'), + 'propal' => $langs->trans('Proposal'), + 'facture' => $langs->trans('Bill'), + 'facture_fourn' => $langs->trans('SupplierBill'), + 'fichinter' => $langs->trans('InterventionCard') + ); + if (! empty($conf->global->MAIN_SUPPORT_CONTACT_TYPE_FOR_THIRDPARTIES)) $elementList["societe"] = $langs->trans('ThirdParty'); + $sourceList = array( + 'internal' => $langs->trans('Internal'), + 'external' => $langs->trans('External') + ); } // Define localtax_typeList (used for dictionnary "c_tva") $localtax_typeList = array(); if (GETPOST("id") == 10) { - $localtax_typeList = array( - "0" => $langs->trans("No"), - "1" => $langs->trans("Yes").' ('.$langs->trans("Type")." 1)", //$langs->trans("%ageOnAllWithoutVAT"), - "2" => $langs->trans("Yes").' ('.$langs->trans("Type")." 2)", //$langs->trans("%ageOnAllBeforeVAT"), - "3" => $langs->trans("Yes").' ('.$langs->trans("Type")." 3)", //$langs->trans("%ageOnProductsWithoutVAT"), - "4" => $langs->trans("Yes").' ('.$langs->trans("Type")." 4)", //$langs->trans("%ageOnProductsBeforeVAT"), - "5" => $langs->trans("Yes").' ('.$langs->trans("Type")." 5)", //$langs->trans("%ageOnServiceWithoutVAT"), - "6" => $langs->trans("Yes").' ('.$langs->trans("Type")." 6)", //$langs->trans("%ageOnServiceBeforeVAT"), - "7" => $langs->trans("Yes").' ('.$langs->trans("Type")." 7)" //$langs->trans("AmountOnOrder") // We will enable this later. For the moment, work only of invoice localtype - ); + $localtax_typeList = array( + "0" => $langs->trans("No"), + "1" => $langs->trans("Yes").' ('.$langs->trans("Type")." 1)", //$langs->trans("%ageOnAllWithoutVAT"), + "2" => $langs->trans("Yes").' ('.$langs->trans("Type")." 2)", //$langs->trans("%ageOnAllBeforeVAT"), + "3" => $langs->trans("Yes").' ('.$langs->trans("Type")." 3)", //$langs->trans("%ageOnProductsWithoutVAT"), + "4" => $langs->trans("Yes").' ('.$langs->trans("Type")." 4)", //$langs->trans("%ageOnProductsBeforeVAT"), + "5" => $langs->trans("Yes").' ('.$langs->trans("Type")." 5)", //$langs->trans("%ageOnServiceWithoutVAT"), + "6" => $langs->trans("Yes").' ('.$langs->trans("Type")." 6)", //$langs->trans("%ageOnServiceBeforeVAT"), + "7" => $langs->trans("Yes").' ('.$langs->trans("Type")." 7)" //$langs->trans("AmountOnOrder") // We will enable this later. For the moment, work only of invoice localtype + ); } $msg=''; @@ -404,7 +405,7 @@ if (GETPOST('actionadd') || GETPOST('actionmodify')) if ($value == 'localtax2' && empty($_POST['localtax2_type'])) continue; if ((! isset($_POST[$value]) || $_POST[$value]=='') // && (! in_array($listfield[$f], array('decalage','module','accountancy_code','localtax1','localtax2'))) // Fields that are not mandatory - && (! in_array($listfield[$f], array('decalage','module','accountancy_code'))) // Fields that are not mandatory + && (! in_array($listfield[$f], array('decalage','module','accountancy_code_sell','accountancy_code_buy'))) // Fields that are not mandatory ) { $ok=0; @@ -464,14 +465,14 @@ if (GETPOST('actionadd') || GETPOST('actionmodify')) // Add new entry $sql = "INSERT INTO ".$tabname[$id]." ("; // List of fields - if ($tabrowid[$id] && - ! in_array($tabrowid[$id],$listfieldinsert)) $sql.= $tabrowid[$id].","; + if ($tabrowid[$id] && ! in_array($tabrowid[$id],$listfieldinsert)) + $sql.= $tabrowid[$id].","; $sql.= $tabfieldinsert[$id]; $sql.=",active)"; $sql.= " VALUES("; // List of values - if ($tabrowid[$id] && - ! in_array($tabrowid[$id],$listfieldinsert)) $sql.= $newid.","; + if ($tabrowid[$id] && ! in_array($tabrowid[$id],$listfieldinsert)) + $sql.= $newid.","; $i=0; foreach ($listfieldinsert as $f => $value) { @@ -516,7 +517,7 @@ if (GETPOST('actionadd') || GETPOST('actionmodify')) // Modify entry $sql = "UPDATE ".$tabname[$id]." SET "; // Modifie valeur des champs - if ($tabrowid[$id] && !in_array($tabrowid[$id],$listfieldmodify)) + if ($tabrowid[$id] && ! in_array($tabrowid[$id],$listfieldmodify)) { $sql.= $tabrowid[$id]."="; $sql.= "'".$db->escape($rowid)."', "; @@ -633,7 +634,7 @@ $linkback=''; if ($id) { $titre.=' - '.$langs->trans($tablib[$id]); - $linkback='<a href="'.DOL_URL_ROOT.'/admin/dict.php">'.$langs->trans("BackToDictionnaryList").'</a>'; + $linkback='<a href="'.$_SERVER['PHP_SELF'].'">'.$langs->trans("BackToDictionnaryList").'</a>'; } print_fiche_titre($titre,$linkback,'setup'); @@ -685,7 +686,7 @@ if ($id) $fieldlist=explode(',',$tabfield[$id]); - print '<form action="'.$_SERVER["PHP_SELF"].'" method="post">'; + print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$id.'" method="POST">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '<table class="noborder" width="100%">'; @@ -710,9 +711,9 @@ if ($id) if ($fieldlist[$field]=='price') { $valuetoshow=$langs->trans("PriceUHT"); } if ($fieldlist[$field]=='taux') { $valuetoshow=$langs->trans("Rate"); } if ($fieldlist[$field]=='localtax1_type') { $valuetoshow=$form->textwithtooltip($langs->trans("UseLocalTax")." 2",$langs->trans("LocalTaxDesc"),2,1,img_help(1,'')); $align="center"; $sortable=0; } - if ($fieldlist[$field]=='localtax1') { $valuetoshow=$langs->trans("Rate")." 2"; $align="right"; } + if ($fieldlist[$field]=='localtax1') { $valuetoshow=$langs->trans("Rate")." 2";} if ($fieldlist[$field]=='localtax2_type') { $valuetoshow=$form->textwithtooltip($langs->trans("UseLocalTax")." 3",$langs->trans("LocalTaxDesc"),2,1,img_help(1,'')); $align="center"; $sortable=0; } - if ($fieldlist[$field]=='localtax2') { $valuetoshow=$langs->trans("Rate")." 3"; $align="right"; } + if ($fieldlist[$field]=='localtax2') { $valuetoshow=$langs->trans("Rate")." 3";} if ($fieldlist[$field]=='organization') { $valuetoshow=$langs->trans("Organization"); } if ($fieldlist[$field]=='lang') { $valuetoshow=$langs->trans("Language"); } if ($fieldlist[$field]=='type') { $valuetoshow=$langs->trans("Type"); } @@ -731,7 +732,8 @@ if ($id) if ($fieldlist[$field]=='height') { $valuetoshow=$langs->trans("Height"); } if ($fieldlist[$field]=='unit') { $valuetoshow=$langs->trans("MeasuringUnit"); } if ($fieldlist[$field]=='region_id' || $fieldlist[$field]=='pays_id') { $valuetoshow=''; } - if ($fieldlist[$field]=='accountancy_code'){ $valuetoshow=$langs->trans("AccountancyCode"); } + if ($fieldlist[$field]=='accountancy_code_sell'){ $valuetoshow=$langs->trans("AccountancyCodeSell"); } + if ($fieldlist[$field]=='accountancy_code_buy'){ $valuetoshow=$langs->trans("AccountancyCodeBuy"); } if ($fieldlist[$field]=='fk_pcg_version') { $valuetoshow=$langs->trans("Pcg_version"); } if ($fieldlist[$field]=='account_number') { $valuetoshow=$langs->trans("Account"); } if ($fieldlist[$field]=='account_parent') { $valuetoshow=$langs->trans("Accountparent"); } @@ -776,13 +778,14 @@ if ($id) print '<td colspan="3" align="right"><input type="submit" class="button" name="actionadd" value="'.$langs->trans("Add").'"></td>'; print "</tr>"; - if ($alabelisused) // Si un des champs est un libelle + if (! empty($alabelisused)) // Si un des champs est un libelle { print '<tr><td colspan="'.(count($fieldlist)+2).'">* '.$langs->trans("LabelUsedByDefault").'.</td></tr>'; } print '<tr><td colspan="'.(count($fieldlist)+2).'"> </td></tr>'; } + print '</form>'; // List of available values in database dol_syslog("htdocs/admin/dict sql=".$sql, LOG_DEBUG); @@ -825,9 +828,9 @@ if ($id) if ($fieldlist[$field]=='price') { $valuetoshow=$langs->trans("PriceUHT"); } if ($fieldlist[$field]=='taux') { $valuetoshow=$langs->trans("Rate"); } if ($fieldlist[$field]=='localtax1_type') { $valuetoshow=$form->textwithtooltip($langs->trans("UseLocalTax")." 2",$langs->trans("LocalTaxDesc"),2,1,img_help(1,'')); $align="center"; $sortable=0; } - if ($fieldlist[$field]=='localtax1') { $valuetoshow=$langs->trans("Rate")." 2"; $align="right"; $sortable=0; } + if ($fieldlist[$field]=='localtax1') { $valuetoshow=$langs->trans("Rate")." 2"; $sortable=0; } if ($fieldlist[$field]=='localtax2_type') { $valuetoshow=$form->textwithtooltip($langs->trans("UseLocalTax")." 3",$langs->trans("LocalTaxDesc"),2,1,img_help(1,'')); $align="center"; $sortable=0; } - if ($fieldlist[$field]=='localtax2') { $valuetoshow=$langs->trans("Rate")." 3"; $align="right"; $sortable=0; } + if ($fieldlist[$field]=='localtax2') { $valuetoshow=$langs->trans("Rate")." 3"; $sortable=0; } if ($fieldlist[$field]=='organization') { $valuetoshow=$langs->trans("Organization"); } if ($fieldlist[$field]=='lang') { $valuetoshow=$langs->trans("Language"); } if ($fieldlist[$field]=='type') { $valuetoshow=$langs->trans("Type"); } @@ -843,7 +846,8 @@ if ($id) if ($fieldlist[$field]=='height') { $valuetoshow=$langs->trans("Height"); } if ($fieldlist[$field]=='unit') { $valuetoshow=$langs->trans("MeasuringUnit"); } if ($fieldlist[$field]=='region_id' || $fieldlist[$field]=='pays_id') { $showfield=0; } - if ($fieldlist[$field]=='accountancy_code'){ $valuetoshow=$langs->trans("AccountancyCode"); } + if ($fieldlist[$field]=='accountancy_code_sell'){ $valuetoshow=$langs->trans("AccountancyCodeSell"); $sortable=0; } + if ($fieldlist[$field]=='accountancy_code_buy'){ $valuetoshow=$langs->trans("AccountancyCodeBuy"); $sortable=0; } if ($fieldlist[$field]=='fk_pcg_version') { $valuetoshow=$langs->trans("Pcg_version"); } if ($fieldlist[$field]=='account_number') { $valuetoshow=$langs->trans("Accounts"); } if ($fieldlist[$field]=='account_parent') { $valuetoshow=$langs->trans("Accountsparent"); } @@ -869,9 +873,8 @@ if ($id) print '<tr '.$bc[$var].' id="rowid-'.$obj->rowid.'">'; if ($action == 'edit' && ($rowid == (! empty($obj->rowid)?$obj->rowid:$obj->code))) { - print '<form action="dict.php" method="post">'; + print '<form action="'.$_SERVER['PHP_SELF'].'?id='.$id.'" method="POST">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; - print '<input type="hidden" name="id" value="'.$id.'">'; print '<input type="hidden" name="page" value="'.$page.'">'; print '<input type="hidden" name="rowid" value="'.$rowid.'">'; @@ -886,7 +889,7 @@ if ($id) print ' <input type="submit" class="button" name="actioncancel" value="'.$langs->trans("Cancel").'"></td>'; } else - { + { $tmpaction = 'view'; $parameters=array('var'=>$var, 'fieldlist'=>$fieldlist, 'tabname'=>$tabname[$id]); $reshook=$hookmanager->executeHooks('viewDictionaryFieldlist',$parameters,$obj, $tmpaction); // Note that $action and $object may have been modified by some hooks @@ -919,7 +922,7 @@ if ($id) else { $key=$langs->trans("Country".strtoupper($obj->pays_code)); - $valuetoshow=($key != "Country".strtoupper($obj->pays_code))?$obj->pays_code." - ".$key:$obj->pays; + $valuetoshow=($key != "Country".strtoupper($obj->pays_code)?$obj->pays_code." - ".$key:$obj->pays); } } else if ($fieldlist[$field]=='recuperableonly' || $fieldlist[$field]=='fdm' || $fieldlist[$field] == 'deductible') { @@ -932,55 +935,55 @@ if ($id) else if ($fieldlist[$field]=='libelle_facture') { $langs->load("bills"); $key=$langs->trans("PaymentCondition".strtoupper($obj->code)); - $valuetoshow=($obj->code && $key != "PaymentCondition".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + $valuetoshow=($obj->code && $key != "PaymentCondition".strtoupper($obj->code)?$key:$obj->$fieldlist[$field]); $valuetoshow=nl2br($valuetoshow); } else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_pays') { $key=$langs->trans("Country".strtoupper($obj->code)); - $valuetoshow=($obj->code && $key != "Country".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + $valuetoshow=($obj->code && $key != "Country".strtoupper($obj->code)?$key:$obj->$fieldlist[$field]); } else if ($fieldlist[$field]=='label' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_availability') { $langs->load("propal"); $key=$langs->trans("AvailabilityType".strtoupper($obj->code)); - $valuetoshow=($obj->code && $key != "AvailabilityType".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + $valuetoshow=($obj->code && $key != "AvailabilityType".strtoupper($obj->code)?$key:$obj->$fieldlist[$field]); } else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_actioncomm') { $key=$langs->trans("Action".strtoupper($obj->code)); - $valuetoshow=($obj->code && $key != "Action".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + $valuetoshow=($obj->code && $key != "Action".strtoupper($obj->code)?$key:$obj->$fieldlist[$field]); } else if (! empty($obj->code_iso) && $fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_currencies') { $key=$langs->trans("Currency".strtoupper($obj->code_iso)); - $valuetoshow=($obj->code_iso && $key != "Currency".strtoupper($obj->code_iso))?$key:$obj->$fieldlist[$field]; + $valuetoshow=($obj->code_iso && $key != "Currency".strtoupper($obj->code_iso)?$key:$obj->$fieldlist[$field]); } else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_typent') { $key=$langs->trans(strtoupper($obj->code)); - $valuetoshow=($key != strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + $valuetoshow=($key != strtoupper($obj->code)?$key:$obj->$fieldlist[$field]); } else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_prospectlevel') { $key=$langs->trans(strtoupper($obj->code)); - $valuetoshow=($key != strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + $valuetoshow=($key != strtoupper($obj->code)?$key:$obj->$fieldlist[$field]); } else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_civilite') { $key=$langs->trans("Civility".strtoupper($obj->code)); - $valuetoshow=($obj->code && $key != "Civility".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + $valuetoshow=($obj->code && $key != "Civility".strtoupper($obj->code)?$key:$obj->$fieldlist[$field]); } else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_type_contact') { $key=$langs->trans("TypeContact_".$obj->element."_".$obj->source."_".strtoupper($obj->code)); - $valuetoshow=($obj->code && $key != "TypeContact_".$obj->element."_".$obj->source."_".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + $valuetoshow=($obj->code && $key != "TypeContact_".$obj->element."_".$obj->source."_".strtoupper($obj->code)?$key:$obj->$fieldlist[$field]); } else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_payment_term') { $langs->load("bills"); $key=$langs->trans("PaymentConditionShort".strtoupper($obj->code)); - $valuetoshow=($obj->code && $key != "PaymentConditionShort".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + $valuetoshow=($obj->code && $key != "PaymentConditionShort".strtoupper($obj->code)?$key:$obj->$fieldlist[$field]); } else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_paiement') { $langs->load("bills"); $key=$langs->trans("PaymentType".strtoupper($obj->code)); - $valuetoshow=($obj->code && $key != "PaymentType".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + $valuetoshow=($obj->code && $key != "PaymentType".strtoupper($obj->code)?$key:$obj->$fieldlist[$field]); } else if ($fieldlist[$field]=='label' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_input_reason') { $key=$langs->trans("DemandReasonType".strtoupper($obj->code)); - $valuetoshow=($obj->code && $key != "DemandReasonType".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + $valuetoshow=($obj->code && $key != "DemandReasonType".strtoupper($obj->code)?$key:$obj->$fieldlist[$field]); } else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_input_method') { $langs->load("orders"); @@ -990,18 +993,18 @@ if ($id) else if ($fieldlist[$field]=='libelle' && $tabname[$_GET["id"]]==MAIN_DB_PREFIX.'c_shipment_mode') { $langs->load("sendings"); $key=$langs->trans("SendingMethod".strtoupper($obj->code)); - $valuetoshow=($obj->code && $key != "SendingMethod".strtoupper($obj->code))?$key:$obj->$fieldlist[$field]; + $valuetoshow=($obj->code && $key != "SendingMethod".strtoupper($obj->code)?$key:$obj->$fieldlist[$field]); } else if ($fieldlist[$field] == 'libelle' && $tabname[$_GET['id']]==MAIN_DB_PREFIX.'c_paper_format') { $key = $langs->trans('PaperFormat'.strtoupper($obj->code)); - $valuetoshow = ($obj->code && ($key != 'PaperFormat'.strtoupper($obj->code))) ? $key : $obj->$fieldlist[$field]; + $valuetoshow = ($obj->code && $key != 'PaperFormat'.strtoupper($obj->code) ? $key : $obj->$fieldlist[$field]); } else if ($fieldlist[$field] == 'libelle' && $tabname[$_GET['id']] == MAIN_DB_PREFIX.'c_type_fees') { $langs->load('trips'); $key = $langs->trans(strtoupper($obj->code)); - $valuetoshow = ($obj->code && ($key != strtoupper($obj->code))) ? $key : $obj->$fieldlist[$field]; + $valuetoshow = ($obj->code && $key != strtoupper($obj->code) ? $key : $obj->$fieldlist[$field]); } else if ($fieldlist[$field]=='region_id' || $fieldlist[$field]=='pays_id') { $showfield=0; @@ -1013,7 +1016,7 @@ if ($id) else if (($fieldlist[$field] == 'unit') && ($tabname[$_GET['id']] == MAIN_DB_PREFIX.'c_paper_format')) { $key = $langs->trans('SizeUnit'.strtolower($obj->unit)); - $valuetoshow = ($obj->code && ($key != 'SizeUnit'.strtolower($obj->unit))) ? $key : $obj->$fieldlist[$field]; + $valuetoshow = ($obj->code && $key != 'SizeUnit'.strtolower($obj->unit) ? $key : $obj->$fieldlist[$field]); } else if ($fieldlist[$field]=='localtax1_type') { @@ -1167,108 +1170,110 @@ $db->close(); */ function fieldList($fieldlist,$obj='',$tabname='') { - global $conf,$langs,$db; - global $form; - global $region_id; - global $elementList,$sourceList,$localtax_typeList; - - $formadmin = new FormAdmin($db); - $formcompany = new FormCompany($db); - - foreach ($fieldlist as $field => $value) - { - if ($fieldlist[$field] == 'pays') { - if (in_array('region_id',$fieldlist)) { print '<td> </td>'; continue; } // For region page, we do not show the country input - print '<td>'; - print $form->select_country((! empty($obj->pays_code)?$obj->pays_code:(! empty($obj->pays)?$obj->pays:'')),'pays'); - print '</td>'; - } - elseif ($fieldlist[$field] == 'pays_id') { - $pays_id = (! empty($obj->$fieldlist[$field])) ? $obj->$fieldlist[$field] : 0; - print '<input type="hidden" name="'.$fieldlist[$field].'" value="'.$pays_id.'">'; - } - elseif ($fieldlist[$field] == 'region') { - print '<td>'; - $formcompany->select_region($region_id,'region'); - print '</td>'; - } - elseif ($fieldlist[$field] == 'region_id') { - $region_id = (! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:0); - print '<input type="hidden" name="'.$fieldlist[$field].'" value="'.$region_id.'">'; - } - elseif ($fieldlist[$field] == 'lang') { - print '<td>'; - print $formadmin->select_language($conf->global->MAIN_LANG_DEFAULT,'lang'); - print '</td>'; - } - // Le type de l'element (pour les type de contact).' - elseif ($fieldlist[$field] == 'element') - { - print '<td>'; - print $form->selectarray('element', $elementList,(! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'')); - print '</td>'; - } - // La source de l'element (pour les type de contact).' - elseif ($fieldlist[$field] == 'source') - { - print '<td>'; - print $form->selectarray('source', $sourceList,(! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'')); - print '</td>'; - } - elseif ($fieldlist[$field] == 'type' && $tabname == MAIN_DB_PREFIX."c_actioncomm") - { - print '<td>'; - print 'user<input type="hidden" name="type" value="user">'; - print '</td>'; - } - elseif ($fieldlist[$field] == 'recuperableonly' || $fieldlist[$field] == 'fdm' || $fieldlist[$field] == 'deductible') { - print '<td>'; - print $form->selectyesno($fieldlist[$field],(! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:''),1); - print '</td>'; - } - elseif (in_array($fieldlist[$field],array('nbjour','decalage','taux','localtax1','localtax2'))) { - $align="left"; - if (in_array($fieldlist[$field],array('taux','localtax1','localtax2'))) $align="right"; // Fields aligned on right - print '<td align="'.$align.'">'; - print '<input type="text" class="flat" value="'.(! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'').'" size="3" name="'.$fieldlist[$field].'">'; - print '</td>'; - } - elseif ($fieldlist[$field] == 'libelle_facture') { - print '<td><textarea cols="30" rows="'.ROWS_2.'" class="flat" name="'.$fieldlist[$field].'">'.(! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'').'</textarea></td>'; - } - elseif ($fieldlist[$field] == 'price' || preg_match('/^amount/i',$fieldlist[$field])) { - print '<td><input type="text" class="flat" value="'.price((! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'')).'" size="8" name="'.$fieldlist[$field].'"></td>'; - } - elseif ($fieldlist[$field] == 'code' && isset($obj->$fieldlist[$field])) { - print '<td><input type="text" class="flat" value="'.(! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'').'" size="10" name="'.$fieldlist[$field].'"></td>'; - } - elseif ($fieldlist[$field]=='unit') { - print '<td>'; - print $form->selectarray('unit', array( - 'mm' => $langs->trans('SizeUnitmm'), - 'cm' => $langs->trans('SizeUnitcm'), - 'point' => $langs->trans('SizeUnitpoint'), - 'inch' => $langs->trans('SizeUnitinch') - ), (! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:''), 0, 0, 0); - print '</td>'; - } - // Le type de taxe locale - elseif ($fieldlist[$field] == 'localtax1_type' || $fieldlist[$field] == 'localtax2_type') - { - print '<td align="center">'; - print $form->selectarray($fieldlist[$field], $localtax_typeList,$obj->$fieldlist[$field]); - print '</td>'; - } - else - { - print '<td>'; - $size=''; - if ($fieldlist[$field]=='libelle') $size='size="32" '; - if ($fieldlist[$field]=='accountancy_code') $size='size="9" '; - print '<input type="text" '.$size.' class="flat" value="'.(isset($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'').'" name="'.$fieldlist[$field].'">'; - print '</td>'; - } - } + global $conf,$langs,$db; + global $form; + global $region_id; + global $elementList,$sourceList,$localtax_typeList; + + $formadmin = new FormAdmin($db); + $formcompany = new FormCompany($db); + + foreach ($fieldlist as $field => $value) + { + if ($fieldlist[$field] == 'pays') { + if (in_array('region_id',$fieldlist)) { print '<td> </td>'; continue; } // For region page, we do not show the country input + print '<td>'; + print $form->select_country((! empty($obj->pays_code)?$obj->pays_code:(! empty($obj->pays)?$obj->pays:'')),'pays'); + print '</td>'; + } + elseif ($fieldlist[$field] == 'pays_id') { + $pays_id = (! empty($obj->$fieldlist[$field]) ? $obj->$fieldlist[$field] : 0); + print '<input type="hidden" name="'.$fieldlist[$field].'" value="'.$pays_id.'">'; + } + elseif ($fieldlist[$field] == 'region') { + print '<td>'; + $formcompany->select_region($region_id,'region'); + print '</td>'; + } + elseif ($fieldlist[$field] == 'region_id') { + $region_id = (! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:0); + print '<input type="hidden" name="'.$fieldlist[$field].'" value="'.$region_id.'">'; + } + elseif ($fieldlist[$field] == 'lang') { + print '<td>'; + print $formadmin->select_language($conf->global->MAIN_LANG_DEFAULT,'lang'); + print '</td>'; + } + // Le type de l'element (pour les type de contact) + elseif ($fieldlist[$field] == 'element') + { + print '<td>'; + print $form->selectarray('element', $elementList,(! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'')); + print '</td>'; + } + // La source de l'element (pour les type de contact) + elseif ($fieldlist[$field] == 'source') + { + print '<td>'; + print $form->selectarray('source', $sourceList,(! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'')); + print '</td>'; + } + elseif ($fieldlist[$field] == 'type' && $tabname == MAIN_DB_PREFIX."c_actioncomm") + { + print '<td>'; + print 'user<input type="hidden" name="type" value="user">'; + print '</td>'; + } + elseif ($fieldlist[$field] == 'recuperableonly' || $fieldlist[$field] == 'fdm' || $fieldlist[$field] == 'deductible') { + print '<td>'; + print $form->selectyesno($fieldlist[$field],(! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:''),1); + print '</td>'; + } + elseif (in_array($fieldlist[$field],array('nbjour','decalage','taux','localtax1','localtax2'))) { + $align="left"; + if (in_array($fieldlist[$field],array('taux','localtax1','localtax2'))) $align="right"; // Fields aligned on right + print '<td align="'.$align.'">'; + print '<input type="text" class="flat" value="'.(! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'').'" size="3" name="'.$fieldlist[$field].'">'; + print '</td>'; + } + elseif ($fieldlist[$field] == 'libelle_facture') { + print '<td><textarea cols="30" rows="'.ROWS_2.'" class="flat" name="'.$fieldlist[$field].'">'.(! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'').'</textarea></td>'; + } + elseif ($fieldlist[$field] == 'price' || preg_match('/^amount/i',$fieldlist[$field])) { + print '<td><input type="text" class="flat" value="'.price((! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'')).'" size="8" name="'.$fieldlist[$field].'"></td>'; + } + elseif ($fieldlist[$field] == 'code' && isset($obj->$fieldlist[$field])) { + print '<td><input type="text" class="flat" value="'.(! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'').'" size="10" name="'.$fieldlist[$field].'"></td>'; + } + elseif ($fieldlist[$field]=='unit') { + print '<td>'; + $units = array( + 'mm' => $langs->trans('SizeUnitmm'), + 'cm' => $langs->trans('SizeUnitcm'), + 'point' => $langs->trans('SizeUnitpoint'), + 'inch' => $langs->trans('SizeUnitinch') + ); + print $form->selectarray('unit', $units, (! empty($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:''), 0, 0, 0); + print '</td>'; + } + // Le type de taxe locale + elseif ($fieldlist[$field] == 'localtax1_type' || $fieldlist[$field] == 'localtax2_type') + { + print '<td align="center">'; + print $form->selectarray($fieldlist[$field], $localtax_typeList,$obj->$fieldlist[$field]); + print '</td>'; + } + else + { + print '<td>'; + $size=''; + if ($fieldlist[$field]=='libelle') $size='size="32" '; + if ($fieldlist[$field]=='accountancy_code_sell') $size='size="15" '; + if ($fieldlist[$field]=='accountancy_code_buy') $size='size="15" '; + print '<input type="text" '.$size.' class="flat" value="'.(isset($obj->$fieldlist[$field])?$obj->$fieldlist[$field]:'').'" name="'.$fieldlist[$field].'">'; + print '</td>'; + } + } } ?> \ No newline at end of file diff --git a/htdocs/commande/liste.php b/htdocs/commande/liste.php index 641d13f864383adab644229068ab2bd6050d6191..b3ea2328866718786510ad292e4628f8b4046291 100644 --- a/htdocs/commande/liste.php +++ b/htdocs/commande/liste.php @@ -319,6 +319,8 @@ if ($resql) $companystatic->client=$objp->client; print '<td>'; print $companystatic->getNomUrl(1,'customer'); + print ' <a href="'.DOL_URL_ROOT.'/commande/orderstoinvoice.php?socid='.$companystatic->id.'">'; + print img_picto($langs->trans("CreateInvoiceForThisCustomer").' : '.$companystatic->nom,'object_bill').'</a>'; print '</td>'; print '<td>'.$objp->ref_client.'</td>'; diff --git a/htdocs/commande/orderstoinvoice.php b/htdocs/commande/orderstoinvoice.php index bffc4530fff8e12d5c64a612f23762a33490edf6..60ce5d3b11b6453de7f723eb5404792bd74e8a81 100755 --- a/htdocs/commande/orderstoinvoice.php +++ b/htdocs/commande/orderstoinvoice.php @@ -129,6 +129,7 @@ if (($action == 'create' || $action == 'add') && empty($mesgs)) $lineid = GETPOST('lineid','int'); $userid = GETPOST('userid','int'); $search_ref = GETPOST('sf_ref')?GETPOST('sf_ref'):GETPOST('search_ref'); + $closeOrders = GETPOST('autocloseorders') != '' ? true : false; // Security check $fieldid = GETPOST('ref','alpha')?'facnumber':'rowid'; @@ -215,8 +216,10 @@ if (($action == 'create' || $action == 'add') && empty($mesgs)) $result=$srcobject->fetch($orders_id[$ii]); if ($result > 0) { - $srcobject->classer_facturee(); - $srcobject->setStatut(3); + if($closeOrders) { + $srcobject->classer_facturee(); + $srcobject->setStatut(3); + } $lines = $srcobject->lines; if (empty($lines) && method_exists($srcobject,'fetch_lines')) $lines = $srcobject->fetch_lines(); $fk_parent_line=0; @@ -383,6 +386,7 @@ if ($action == 'create') print '<input name="ref_int" type="hidden" value="'.$ref_int.'">'; print '<input type="hidden" name="origin" value="'.GETPOST('origin').'">'; print '<input type="hidden" name="originid" value="'.GETPOST('originid').'">'; + print '<input type="hidden" name="autocloseorders" value="'.GETPOST('autocloseorders').'">'; print '<table class="border" width="100%">'; // Ref print '<tr><td class="fieldrequired">'.$langs->trans('Ref').'</td><td colspan="2">'.$langs->trans('Draft').'</td></tr>'; @@ -402,6 +406,7 @@ if ($action == 'create') print $desc; print '</td></tr>'."\n"; print '</table>'; + // Date invoice print '<tr><td class="fieldrequired">'.$langs->trans('Date').'</td><td colspan="2">'; $html->select_date(0,'','','','',"add",1,1); @@ -444,7 +449,7 @@ if ($action == 'create') $result=$srcobject->fetch($sel); if ($result > 0) { - $commandes.= $srcobject->ref." "; + $commandes.= $srcobject->ref.", "; } } print $commandes; @@ -462,8 +467,6 @@ if ($action == 'create') } print '</table>'; - print '</td></tr>'; - while ($i < $n) { @@ -472,10 +475,12 @@ if ($action == 'create') $i++; } - print "</table>\n"; // Button "Create Draft" - print '<br><center><input type="submit" class="button" name="bouton" value="'.$langs->trans('CreateDraft').'"></center>'; + print '<br><center><input type="submit" class="button" name="bouton" value="'.$langs->trans('CreateDraft').'" /></center>'; print "</form>\n"; + + print '</td></tr>'; + print "</table>\n"; } @@ -667,7 +672,9 @@ if (($action != 'create' && $action != 'add') || ! empty($mesgs)) print '<input type="hidden" name="action" value="create">'; print '<input type="hidden" name="origin" value="commande"><br>'; print '<a class="butAction" href="index.php">'.$langs->trans("GoBack").'</a>'; - print '<input type="submit" class="butAction" value='.$langs->trans("GenerateBill").'>'; + print '<input type="submit" class="button" value='.$langs->trans("GenerateBill").'>'; + print '<center><br><input type="checkbox" checked="checked" name="autocloseorders"> '.$langs->trans("CloseProcessedOrdersAutomatically"); + print '</div>'; print '</form>'; $db->free($resql); } diff --git a/htdocs/compta/journal/purchasesjournal.php b/htdocs/compta/journal/purchasesjournal.php index b6defe0104078381b209de27f60475a481b8a17a..5aa17340f22cbe6977fdffa9b11fe1896e833c51 100755 --- a/htdocs/compta/journal/purchasesjournal.php +++ b/htdocs/compta/journal/purchasesjournal.php @@ -3,6 +3,7 @@ * Copyright (C) 2007-2010 Jean Heimburger <jean@tiaris.info> * Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2012 Regis Houssin <regis@dolibarr.fr> + * Copyright (C) 2011-2012 Alexandre Spangaro <alexandre.spangaro@gmail.com> * * 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 @@ -95,7 +96,7 @@ $sql = "SELECT f.rowid, f.facnumber, f.type, f.datef, f.libelle,"; $sql.= " fd.total_ttc, fd.tva_tx, fd.total_ht, fd.tva as total_tva, fd.product_type,"; $sql.= " s.rowid as socid, s.nom as name, s.code_compta_fournisseur,"; $sql.= " p.rowid as pid, p.ref as ref, p.accountancy_code_buy,"; -$sql.= " ct.accountancy_code"; +$sql.= " ct.accountancy_code_buy as account_tva"; $sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn_det fd"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."c_tva ct ON fd.tva_tx = ct.taux AND ct.fk_pays = '".$idpays."'"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product p ON p.rowid = fd.fk_product"; @@ -109,8 +110,8 @@ if ($result) { $num = $db->num_rows($result); // les variables - $cptfour = (! empty($conf->global->COMPTA_ACCOUNT_SUPPLIER))?$conf->global->COMPTA_ACCOUNT_SUPPLIER:$langs->trans("CodeNotDef"); - $cpttva = (! empty($conf->global->COMPTA_VAT_ACCOUNT))?$conf->global->COMPTA_VAT_ACCOUNT:$langs->trans("CodeNotDef"); + $cptfour = (! empty($conf->global->COMPTA_ACCOUNT_SUPPLIER)?$conf->global->COMPTA_ACCOUNT_SUPPLIER:$langs->trans("CodeNotDef")); + $cpttva = (! empty($conf->global->COMPTA_VAT_ACCOUNT)?$conf->global->COMPTA_VAT_ACCOUNT:$langs->trans("CodeNotDef")); $tabfac = array(); $tabht = array(); @@ -123,14 +124,14 @@ if ($result) { $obj = $db->fetch_object($result); // contrôles - $compta_soc = (! empty($obj->code_compta_fournisseur))?$obj->code_compta_fournisseur:$cptfour; + $compta_soc = (! empty($obj->code_compta_fournisseur)?$obj->code_compta_fournisseur:$cptfour); $compta_prod = $obj->accountancy_code_buy; if (empty($compta_prod)) { - if($obj->product_type == 0) $compta_prod = (! empty($conf->global->COMPTA_PRODUCT_BUY_ACCOUNT))?$conf->global->COMPTA_PRODUCT_BUY_ACCOUNT:$langs->trans("CodeNotDef"); - else $compta_prod = (! empty($conf->global->COMPTA_SERVICE_BUY_ACCOUNT))?$conf->global->COMPTA_SERVICE_BUY_ACCOUNT:$langs->trans("CodeNotDef"); + if($obj->product_type == 0) $compta_prod = (! empty($conf->global->COMPTA_PRODUCT_BUY_ACCOUNT)?$conf->global->COMPTA_PRODUCT_BUY_ACCOUNT:$langs->trans("CodeNotDef")); + else $compta_prod = (! empty($conf->global->COMPTA_SERVICE_BUY_ACCOUNT)?$conf->global->COMPTA_SERVICE_BUY_ACCOUNT:$langs->trans("CodeNotDef")); } - $compta_tva = (! empty($obj->accountancy_code))?$obj->accountancy_code:$cpttva; + $compta_tva = (! empty($obj->account_tva)?$obj->account_tva:$cpttva); $tabfac[$obj->rowid]["date"] = $obj->datef; $tabfac[$obj->rowid]["ref"] = $obj->facnumber; diff --git a/htdocs/compta/journal/sellsjournal.php b/htdocs/compta/journal/sellsjournal.php index a702387e247a7cf161e9a17e666fd9ba2de6fb80..78d174d9565313e03913e515f150392d298526cf 100755 --- a/htdocs/compta/journal/sellsjournal.php +++ b/htdocs/compta/journal/sellsjournal.php @@ -3,6 +3,7 @@ * Copyright (C) 2007-2010 Jean Heimburger <jean@tiaris.info> * Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2012 Regis Houssin <regis@dolibarr.fr> + * Copyright (C) 2011-2012 Alexandre Spangaro <alexandre.spangaro@gmail.com> * * 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 @@ -97,7 +98,7 @@ $sql = "SELECT f.rowid, f.facnumber, f.type, f.datef, f.ref_client,"; $sql.= " fd.product_type, fd.total_ht, fd.total_tva, fd.tva_tx, fd.total_ttc,"; $sql.= " s.rowid as socid, s.nom as name, s.code_compta, s.client,"; $sql.= " p.rowid as pid, p.ref as pref, p.accountancy_code_sell,"; -$sql.= " ct.accountancy_code"; +$sql.= " ct.accountancy_code_sell as account_tva"; $sql.= " FROM ".MAIN_DB_PREFIX."facturedet fd"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product p ON p.rowid = fd.fk_product"; $sql.= " JOIN ".MAIN_DB_PREFIX."facture f ON f.rowid = fd.fk_facture"; @@ -134,7 +135,7 @@ if ($result) else $compta_prod = (! empty($conf->global->COMPTA_SERVICE_SOLD_ACCOUNT)?$conf->global->COMPTA_SERVICE_SOLD_ACCOUNT:$langs->trans("CodeNotDef")); } $cpttva = (! empty($conf->global->COMPTA_VAT_ACCOUNT)?$conf->global->COMPTA_VAT_ACCOUNT:$langs->trans("CodeNotDef")); - $compta_tva = (! empty($obj->accountancy_code)?$obj->accountancy_code:$cpttva); + $compta_tva = (! empty($obj->account_tva)?$obj->account_tva:$cpttva); //la ligne facture $tabfac[$obj->rowid]["date"] = $obj->datef; diff --git a/htdocs/core/lib/product.lib.php b/htdocs/core/lib/product.lib.php index b2cbb2f55a5757359dd292fc05b135db42d96b55..dd14889dfb553fd39f7ea36d1fca8a8b0051e189 100644 --- a/htdocs/core/lib/product.lib.php +++ b/htdocs/core/lib/product.lib.php @@ -132,6 +132,8 @@ function product_prepare_head($object, $user) } } + complete_head_from_modules($conf,$langs,$object,$head,$h,'product', 'remove'); + return $head; } diff --git a/htdocs/core/triggers/interface_20_modPaypal_PaypalWorkflow.class.php b/htdocs/core/triggers/interface_20_modPaypal_PaypalWorkflow.class.php index 3b63eb25c658f8ec847aa34458c5954840184f54..b6b74ba8253b98a7ae450b043c675a8fc8133cf0 100755 --- a/htdocs/core/triggers/interface_20_modPaypal_PaypalWorkflow.class.php +++ b/htdocs/core/triggers/interface_20_modPaypal_PaypalWorkflow.class.php @@ -102,47 +102,54 @@ class InterfacePaypalWorkflow if ($action == 'PAYPAL_PAYMENT_OK') { dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". source=".$object->source." ref=".$object->ref); - - if ($object->source == 'membersubscription') - { - //require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherents.class.php'; - - // TODO add subscription treatment - } - else + + if (! empty($object->source)) { - require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; - - $soc = new Societe($this->db); - - // Parse element/subelement (ex: project_task) - $element = $path = $filename = $object->source; - if (preg_match('/^([^_]+)_([^_]+)/i',$object->source,$regs)) + if ($object->source == 'membersubscription') { - $element = $path = $regs[1]; - $filename = $regs[2]; - } - // For compatibility - if ($element == 'order') { - $path = $filename = 'commande'; + //require_once DOL_DOCUMENT_ROOT.'/adherents/class/adherents.class.php'; + + // TODO add subscription treatment } - if ($element == 'invoice') { - $path = 'compta/facture'; $filename = 'facture'; + else + { + require_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php'; + + $soc = new Societe($this->db); + + // Parse element/subelement (ex: project_task) + $element = $path = $filename = $object->source; + if (preg_match('/^([^_]+)_([^_]+)/i',$object->source,$regs)) + { + $element = $path = $regs[1]; + $filename = $regs[2]; + } + // For compatibility + if ($element == 'order') { + $path = $filename = 'commande'; + } + if ($element == 'invoice') { + $path = 'compta/facture'; $filename = 'facture'; + } + + dol_include_once('/'.$path.'/class/'.$filename.'.class.php'); + + $classname = ucfirst($filename); + $obj = new $classname($this->db); + + $ret = $obj->fetch('',$object->ref); + if ($ret < 0) return -1; + + // Add payer id + $soc->setValueFrom('ref_int', $object->payerID, 'societe', $obj->socid); + + // Add transaction id + $obj->setValueFrom('ref_int',$object->resArray["TRANSACTIONID"]); } - - dol_include_once('/'.$path.'/class/'.$filename.'.class.php'); - - $classname = ucfirst($filename); - $obj = new $classname($this->db); - - $ret = $obj->fetch('',$object->ref); - if ($ret < 0) return -1; - - // Add payer id - $soc->setValueFrom('ref_int', $object->payerID, 'societe', $obj->socid); - - // Add transaction id - $obj->setValueFrom('ref_int',$object->resArray["TRANSACTIONID"]); + } + else + { + // TODO add free tag treatment } } diff --git a/htdocs/install/mysql/migration/3.2.0-3.3.0.sql b/htdocs/install/mysql/migration/3.2.0-3.3.0.sql index 690b429a142566116b1c6e30e725a13de2839bde..492d44fcde50893f8b4a50c077adf6942bef348d 100755 --- a/htdocs/install/mysql/migration/3.2.0-3.3.0.sql +++ b/htdocs/install/mysql/migration/3.2.0-3.3.0.sql @@ -92,7 +92,7 @@ ALTER TABLE llx_commandedet ADD COLUMN label varchar(255) DEFAULT NULL AFTER fk_ ALTER TABLE llx_facturedet ADD COLUMN label varchar(255) DEFAULT NULL AFTER fk_product; ALTER TABLE llx_facturedet_rec ADD COLUMN label varchar(255) DEFAULT NULL AFTER product_type; -ALTER TABLE llx_accountingaccount ADD COLUMN active tinyint DEFAULT 1 NOT NULL AFTER label; +ALTER TABLE llx_accountingaccount ADD COLUMN active tinyint DEFAULT 1 NOT NULL AFTER label; ALTER TABLE llx_actioncomm MODIFY elementtype VARCHAR(32); @@ -122,59 +122,66 @@ ALTER TABLE llx_element_tag ADD UNIQUE INDEX uk_element_tag (entity, lang, tag, CREATE TABLE llx_holiday_config ( -rowid INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY, -name VARCHAR( 255 ) NOT NULL UNIQUE, -value TEXT NULL +rowid integer NOT NULL AUTO_INCREMENT PRIMARY KEY, +name varchar(255) NOT NULL UNIQUE, +value text NULL ) ENGINE=innodb; CREATE TABLE llx_holiday_events ( -rowid INT( 11 ) NOT NULL PRIMARY KEY AUTO_INCREMENT , -name VARCHAR( 255 ) NOT NULL , -value TEXT NOT NULL +rowid integer NOT NULL PRIMARY KEY AUTO_INCREMENT, +entity integer DEFAULT 1 NOT NULL, +name varchar(255) NOT NULL, +value text NOT NULL ) ENGINE=innodb; +ALTER TABLE llx_holiday_events ADD COLUMN entity integer DEFAULT 1 NOT NULL AFTER rowid; +ALTER TABLE llx_holiday_events ADD UNIQUE INDEX uk_holiday_name (name, entity); CREATE TABLE llx_holiday_logs ( -rowid INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , -date_action DATETIME NOT NULL , -fk_user_action INT( 11 ) NOT NULL , -fk_user_update INT( 11 ) NOT NULL , -type_action VARCHAR( 255 ) NOT NULL , -prev_solde VARCHAR( 255 ) NOT NULL , -new_solde VARCHAR( 255 ) NOT NULL +rowid integer NOT NULL AUTO_INCREMENT PRIMARY KEY , +date_action datetime NOT NULL , +fk_user_action integer NOT NULL , +fk_user_update integer NOT NULL , +type_action varchar(255) NOT NULL , +prev_solde varchar(255) NOT NULL , +new_solde varchar(255) NOT NULL ) ENGINE=innodb; CREATE TABLE llx_holiday_users ( -fk_user INT( 11 ) NOT NULL PRIMARY KEY, -nb_holiday FLOAT( 5 ) NOT NULL DEFAULT '0' +fk_user integer NOT NULL PRIMARY KEY, +nb_holiday real NOT NULL DEFAULT '0' ) ENGINE=innodb; +ALTER TABLE llx_holiday_users MODIFY COLUMN nb_holiday real NOT NULL DEFAULT '0'; CREATE TABLE llx_holiday ( -rowid INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY, -fk_user INT( 11 ) NOT NULL , -date_create DATETIME NOT NULL , -description VARCHAR( 255 ) NOT NULL , -date_debut DATE NOT NULL , -date_fin DATE NOT NULL , -statut INT( 11 ) NOT NULL DEFAULT '1', -fk_validator INT( 11 ) NOT NULL , -date_valid DATETIME NULL DEFAULT NULL , -fk_user_valid INT( 11 ) NULL DEFAULT NULL , -date_refuse DATETIME NULL DEFAULT NULL , -fk_user_refuse INT( 11 ) NULL DEFAULT NULL , -date_cancel DATETIME NULL DEFAULT NULL , -fk_user_cancel INT( 11 ) NULL DEFAULT NULL, -detail_refuse varchar( 250 ) NULL DEFAULT NULL +rowid integer NOT NULL AUTO_INCREMENT PRIMARY KEY, +fk_user integer NOT NULL , +date_create datetime NOT NULL , +description varchar(255) NOT NULL , +date_debut date NOT NULL , +date_fin date NOT NULL , +statut integer NOT NULL DEFAULT '1', +fk_validator integer NOT NULL , +date_valid datetime DEFAULT NULL , +fk_user_valid integer DEFAULT NULL , +date_refuse datetime DEFAULT NULL , +fk_user_refuse integer DEFAULT NULL , +date_cancel datetime DEFAULT NULL , +fk_user_cancel integer DEFAULT NULL, +detail_refuse varchar(250) DEFAULT NULL ) ENGINE=innodb; +ALTER TABLE llx_holiday ADD INDEX idx_holiday_fk_user (fk_user); +ALTER TABLE llx_holiday ADD INDEX idx_holiday_date_debut (date_debut); +ALTER TABLE llx_holiday ADD INDEX idx_holiday_date_fin (date_fin); INSERT INTO llx_holiday_config (rowid ,name ,value) VALUES (NULL , 'userGroup', NULL); INSERT INTO llx_holiday_config (rowid ,name ,value) VALUES (NULL , 'lastUpdate', NULL); @@ -259,3 +266,9 @@ UPDATE llx_c_tva set localtax1 = 1, localtax1_type = '4', localtax2 = 0.4, local UPDATE llx_c_tva set localtax1 = 1, localtax1_type = '4', localtax2 = 0.4, localtax2_type = '7' where rowid= 105 and fk_pays= 10 AND localtax1_type='0'; UPDATE llx_c_tva set localtax1 = 1, localtax1_type = '4', localtax2 = 0.4, localtax2_type = '7' where rowid= 106 and fk_pays= 10 AND localtax1_type='0'; UPDATE llx_c_tva set localtax1 = 1, localtax1_type = '4', localtax2 = 0.4, localtax2_type = '7' where rowid= 107 and fk_pays= 10 AND localtax1_type='0'; + +-- Modify table for accountancy +ALTER TABLE llx_c_tva DROP COLUMN accountancy_code; +ALTER TABLE llx_c_tva ADD COLUMN accountancy_code_sell varchar(15) DEFAULT NULL AFTER active; +ALTER TABLE llx_c_tva ADD COLUMN accountancy_code_buy varchar(15) DEFAULT NULL AFTER accountancy_code_sell; +ALTER TABLE llx_c_chargessociales ADD COLUMN accountancy_code varchar(15) DEFAULT NULL AFTER code; diff --git a/htdocs/install/mysql/tables/llx_c_chargesociales.sql b/htdocs/install/mysql/tables/llx_c_chargesociales.sql index 88de4825598c061515889e18e99797d7efc08f3f..ceae526d85d21818a9d9065fe57c97ad21c6630e 100644 --- a/htdocs/install/mysql/tables/llx_c_chargesociales.sql +++ b/htdocs/install/mysql/tables/llx_c_chargesociales.sql @@ -24,6 +24,7 @@ create table llx_c_chargesociales deductible smallint DEFAULT 0 NOT NULL, active tinyint DEFAULT 1 NOT NULL, code varchar(12) NOT NULL, + accountancy_code varchar(15) DEFAULT NULL, fk_pays integer DEFAULT 1 NOT NULL, module varchar(32) NULL )ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_c_tva.sql b/htdocs/install/mysql/tables/llx_c_tva.sql index 9c289ebb811f380addbd682398f40915e971aa1b..0e44f26969ef5c270437e54d9e91cfbb571b58b6 100644 --- a/htdocs/install/mysql/tables/llx_c_tva.sql +++ b/htdocs/install/mysql/tables/llx_c_tva.sql @@ -1,6 +1,7 @@ -- ======================================================================== -- Copyright (C) 2005 Laurent Destailleur <eldy@users.sourceforge.net> -- Copyright (C) 2010 Juanjo Menent <jmenent@2byte.es> +-- Copyright (C) 2011-2012 Alexandre Spangaro <alexandre.spangaro@gmail.com> -- -- 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 @@ -29,7 +30,7 @@ create table llx_c_tva recuperableonly integer NOT NULL DEFAULT 0, note varchar(128), active tinyint DEFAULT 1 NOT NULL, - accountancy_code varchar(15) DEFAULT NULL - + accountancy_code_sell varchar(15) DEFAULT NULL, + accountancy_code_buy varchar(15) DEFAULT NULL )ENGINE=innodb; diff --git a/htdocs/langs/en_US/orders.lang b/htdocs/langs/en_US/orders.lang index cc63582c5ab20b0e55658309172007e28752982f..3aadefcf239846ef14a2f1ee607722a8d53c5059 100644 --- a/htdocs/langs/en_US/orders.lang +++ b/htdocs/langs/en_US/orders.lang @@ -150,4 +150,7 @@ OrderByMail=Mail OrderByFax=Fax OrderByEMail=EMail OrderByWWW=Online -OrderByPhone=Phone \ No newline at end of file +OrderByPhone=Phone + +CreateInvoiceForThisCustomer=Create an invoice for several orders of this customer +CloseProcessedOrdersAutomatically=Classify "Processed" all selected orders. \ No newline at end of file diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index bf2f81b0b57289773146cc2f89d35eceb8ca8778..358fa5fe168abb9908ab9466b91a95fa14ffe09d 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -1303,7 +1303,9 @@ Buy=Achat Sell=Vente InvoiceDateUsed=Date de facture utilisée YourCompanyDoesNotUseVAT=Votre institution est configurée comme non assujettie à la TVA (Accueil - Configuration - Société/Institution), aussi il n'y a aucune option sur la gestion TVA à paramétrer. -AccountancyCode=Code compta +AccountancyCode=Code compta +AccountancyCodeSell=Code compta vente +AccountancyCodeBuy=Code compta achat ##### Agenda ##### AgendaSetup= Configuration du module actions et agenda PasswordTogetVCalExport= Clé pour autoriser lien export diff --git a/htdocs/langs/fr_FR/main.lang b/htdocs/langs/fr_FR/main.lang index 3d65734e2cefeab55301cc9855c456be35ef5df7..5a4f9ebdbb43ffce0baa6689f1e0fe1eb858b353 100644 --- a/htdocs/langs/fr_FR/main.lang +++ b/htdocs/langs/fr_FR/main.lang @@ -250,7 +250,7 @@ MonthOfDay=Mois du jour HourShort=H Rate=Taux UseLocalTax=Inclure taxe -LocalTaxDesc=Certains pays appliquent 2 voir 3 taux sur chaque ligne de facture. Si c'est le cas, choisissez le type du deuxième et troisième taux et sa valeur. Les types possibles sont:<br>1 : local tax apply on products and services without vat (vat is not applied on local tax)<br>2 : local tax apply on products and services before vat (vat is calculated on amount + localtax)<br>3 : local tax apply on products without vat (vat is not applied on local tax)<br>4 : local tax apply on products before vat (vat is calculated on amount + localtax)<br>5 : local tax apply on services without vat (vat is not applied on local tax)<br>6 : local tax apply on services before vat (vat is calculated on amount + localtax)<br>7 : local tax is a fix amount applied on global invoice +LocalTaxDesc=Certains pays appliquent 2 voir 3 taux sur chaque ligne de facture. Si c'est le cas, choisissez le type du deuxième et troisième taux et sa valeur. Les types possibles sont:<br>1 : taxe locale sur les produits et services hors tva (la tva n'est pas appliquée sur la taxe locale)<br>2 : taxe locale sur les produits et services avant tva (la tva est appliquée sur le montant + la taxe locale)<br>3 : taxe locale uniquement sur les produits hors tva (la tva n'est pas appliquée sur la taxe locale)<br>4 : taxe locale uniquement sur les produits avant tva (la tva est appliquée sur le montant + la taxe locale)<br>5 : taxe locale uniquement sur les services hors tva (la tva n'est pas appliquée sur la taxe locale)<br>6 : taxe locale uniquement sur les service avant tva (la tva est appliquée sur le montant + la taxe locale)<br>7 : la taxe locale est un montant fixe ajouté au total de la facture Bytes=Octets KiloBytes=Kilooctets MegaBytes=Mégaoctets diff --git a/htdocs/langs/fr_FR/orders.lang b/htdocs/langs/fr_FR/orders.lang index 329afb01a8db7ecfc0b21a60993b3edf13da1dee..d8c72f32201b2432b6b92158c8ec1dd41c0feaa7 100644 --- a/htdocs/langs/fr_FR/orders.lang +++ b/htdocs/langs/fr_FR/orders.lang @@ -152,3 +152,6 @@ OrderByFax=Fax OrderByEMail=EMail OrderByWWW=En ligne OrderByPhone=Téléphone + +CreateInvoiceForThisCustomer=Créer une facture à partir de plusieurs commande de ce client +CloseProcessedOrdersAutomatically=Classer automatiquement à "Traitées" les commandes sélectionnées. \ No newline at end of file