Merge remote-tracking branch 'origin/3.4' into develop
Conflicts: scripts/invoices/email_unpaid_invoices_to_customers.php scripts/invoices/email_unpaid_invoices_to_representatives.php
This commit is contained in:
commit
fb92e13650
52
ChangeLog
52
ChangeLog
@ -103,32 +103,32 @@ WARNING: If you used external modules, some of them may need to be upgraded due
|
||||
|
||||
***** ChangeLog for 3.3.2 compared to 3.3.1 *****
|
||||
|
||||
- Fix: Dutch (nl_NL) translation
|
||||
- Generalize fix: file with a specific mask not found, again
|
||||
- Fix: translations and BILL_SUPPLIER_BUILDDOC trigger
|
||||
- Fix: Can't reset payment due date
|
||||
- Fix: Orderstoinvoice didn't act as expected when no order was checked
|
||||
- Fix: Bad link to all proposals into Third party card if customer is prospect
|
||||
- Fix: Some bugs on withdrawal rejects
|
||||
- Fix: [ bug #774 ] Bug on creating event with box "all day" crossed
|
||||
- Fix: [ bug #787 ] Invoice supplier box incorrect tooltip when delay on payment
|
||||
- Fix: [ bug #789 ] VAT not being calculated in POS
|
||||
- Fix: [ bug #790 ] Spanish localtax RE not being correctly calculated
|
||||
- Fix: [ bug #794 ] Lost filter on zipcode in prospect list
|
||||
- Fix: [ bug #806 ] Margins module with orders2invoice does not respect cost price
|
||||
- Fix: [ bug #810 ] Cannot update ODT template path
|
||||
- Fix: [ bug #816 ] Sales journal does not reflect localtaxes
|
||||
- Fix: [ bug #817 ] Purchases journal does not reflect localtaxes
|
||||
- Fix: [ bug #824 ] MAIN_DB_PREFIX not use into dictionnary
|
||||
- Fix: [ bug #828 ] Error when code_region is not a number in llx_c_regions (with postgres)
|
||||
- Fix: [ bug #855 ] Holiday approval email in French
|
||||
- Fix: [ bug #856 ] (Holidays module) Mail error if destination user doesn't have an email
|
||||
- Fix: [ bug #857 ] Invoice created from shipment does not have the order discount
|
||||
- Fix: [ bug #861 ] Impossible to create a new event in agenda
|
||||
- Fix: [ bug #827 ] AJAX search does not respect multiprice level
|
||||
- Fix: [ bug #865 ] Dolibarr navigation array in project/task do not work
|
||||
- Fix: [ bug #866 ] Standing order from an invoice suggests invoice total amount instead of remaining to pay
|
||||
- Fix: [ bug #788 ] Date of linked interventions are not shown
|
||||
- Fix: Dutch (nl_NL) translation.
|
||||
- Generalize fix: file with a specific mask not found, again.
|
||||
- Fix: translations and BILL_SUPPLIER_BUILDDOC trigger.
|
||||
- Fix: Can't reset payment due date.
|
||||
- Fix: Orderstoinvoice didn't act as expected when no order was checked.
|
||||
- Fix: Bad link to all proposals into Third party card if customer is prospect.
|
||||
- Fix: Some bugs on withdrawal rejects.
|
||||
- Fix: [ bug #774 ] Bug on creating event with box "all day" crossed.
|
||||
- Fix: [ bug #787 ] Invoice supplier box incorrect tooltip when delay on payment.
|
||||
- Fix: [ bug #789 ] VAT not being calculated in POS.
|
||||
- Fix: [ bug #790 ] Spanish localtax RE not being correctly calculated.
|
||||
- Fix: [ bug #794 ] Lost filter on zipcode in prospect list.
|
||||
- Fix: [ bug #806 ] Margins module with orders2invoice does not respect cost price.
|
||||
- Fix: [ bug #810 ] Cannot update ODT template path.
|
||||
- Fix: [ bug #816 ] Sales journal does not reflect localtaxes.
|
||||
- Fix: [ bug #817 ] Purchases journal does not reflect localtaxes.
|
||||
- Fix: [ bug #824 ] MAIN_DB_PREFIX not use into dictionnary.
|
||||
- Fix: [ bug #828 ] Error when code_region is not a number in llx_c_regions (with postgres).
|
||||
- Fix: [ bug #855 ] Holiday approval email in French.
|
||||
- Fix: [ bug #856 ] (Holidays module) Mail error if destination user doesn't have an email.
|
||||
- Fix: [ bug #857 ] Invoice created from shipment does not have the order discount.
|
||||
- Fix: [ bug #861 ] Impossible to create a new event in agenda.
|
||||
- Fix: [ bug #827 ] AJAX search does not respect multiprice level.
|
||||
- Fix: [ bug #865 ] Dolibarr navigation array in project/task do not work.
|
||||
- Fix: [ bug #866 ] Standing order from an invoice suggests invoice total amount instead of remaining to pay.
|
||||
- Fix: [ bug #788 ] Date of linked interventions are not shown.
|
||||
|
||||
|
||||
***** ChangeLog for 3.3.1 compared to 3.3 *****
|
||||
|
||||
25
README-FR
25
README-FR
@ -78,30 +78,29 @@ IV - CE QUE DOLIBARR PEUT FAIRE
|
||||
-------------------------------
|
||||
|
||||
Modules principaux:
|
||||
- Annuaires des prospects et/ou client et/ou fournisseurs
|
||||
- Gestion de catalogue de produits et services
|
||||
- Gestion de stock
|
||||
- Gestion des comptes bancaires
|
||||
- Annuaires des prospects et/ou client et/ou fournisseurs
|
||||
- Annuaires des contacts
|
||||
- Gestion des actions/taches avec un agenda intégré (ou lien avec webcalendar)
|
||||
- Agenda partagé
|
||||
- Gestion des commandes
|
||||
- Gestion des propositions commerciales
|
||||
- Gestion de contrats de services
|
||||
- Gestion des devis, propositions commerciales
|
||||
- Gestion des factures clients et fournisseurs
|
||||
- Gestion de contrats de services
|
||||
- Gestion des paiements
|
||||
- Gestion des virements bancaires
|
||||
- Gestion des expéditions
|
||||
- GED (Gestion Electronique de Documents)
|
||||
- EMailings de masse
|
||||
- Réalisation de sondages
|
||||
- Point de vente/Caisse enregistreuse
|
||||
|
||||
Autres modules:
|
||||
- Gestion de la TVA NPR (non perçue récupérable - pour les utilisateurs français des DOM-TOM)
|
||||
- Gestion des adhérents d'association
|
||||
- Gestion des dons
|
||||
- Gestion de marque-pages
|
||||
- Agenda
|
||||
- Point de vente/Caisse enregistreuse
|
||||
- Fonctions d'EMailing de masses vers les clients, prospect ou utilisateurs Dolibarr
|
||||
- Gestion des promesses de dons
|
||||
- Gestion de la TVA NPR (non perçue récupérable - pour les utilisateurs français des DOM-TOM)
|
||||
- Rapports
|
||||
- Fonctions d'exports
|
||||
- Imports/Exports des données
|
||||
- Connectivité LDAP
|
||||
- Export PDF de tous les éléments (factures, propositions commerciales, commandes, bons expéditions, etc...)
|
||||
- De nombreuses autres fonctionnalités issues de modules officiels ou non (AWStats, Bittorrent, Gravatar, Google, Webcalendar...)
|
||||
@ -122,7 +121,7 @@ V - CE QUE DOLIBARR NE PEUT PAS FAIRE (TACHES A FAIRE)
|
||||
Voici un liste de fonctionnalites pas encore gérées par Dolibarr:
|
||||
- Pas de compta analytique (uniquement gestion de trésorerie).
|
||||
- Dolibarr ne gère qu'une seule monnaie à la fois (mono-devise).
|
||||
- Dolibarr ne gère en standard qu'une société/institution/association (mono-société). Pour en gérer plusieurs (comme vos filiales), il faut, soit faire plusieurs installations de Dolibarr, soit installer le module MultiCompany qui permet de gérer n société/institutions/associations dans une seule instance par une isolation logique des données.
|
||||
- Dolibarr ne gère en standard qu'une société/institution/association mère (mono-société). Pour en gérer plusieurs (comme vos filiales), il faut, soit faire plusieurs installations de Dolibarr, soit installer le module MultiCompany qui permet de gérer n société/institutions/associations dans une seule instance par une isolation logique des données.
|
||||
- Ne gère pas la double tva (Fédérale / provinciale) du canada.
|
||||
- Dolibarr ne contient pas de module de Gestion de la paie.
|
||||
- Les taches du module de gestion de projets n'ont pas de dépendance entre elle.
|
||||
|
||||
30
README.md
30
README.md
@ -75,33 +75,35 @@ See ChangeLog file found into package.
|
||||
|
||||
### Main modules/features:
|
||||
|
||||
- Products and services catalog
|
||||
- Customers, Prospects or Suppliers directory
|
||||
- Address book
|
||||
- Products and services catalog
|
||||
- Stock management
|
||||
- Bank accounts management
|
||||
- Orders management with PDF export
|
||||
- Commercial proposals management with PDF export
|
||||
- Commercial proposals management
|
||||
- Contracts management
|
||||
- Invoices management with PDF export
|
||||
- Invoices management
|
||||
- Payments management
|
||||
- Standing orders management
|
||||
- Shipping management
|
||||
- ECM (Electronic Content Management)
|
||||
- EMailings
|
||||
- Agenda with ical,vcal export for third tools integration
|
||||
- Management of foundation members
|
||||
- Donation management
|
||||
- ECM (Electronic Content Management)
|
||||
- Foundations members management
|
||||
- Employee's holidays management
|
||||
- Mass emailing
|
||||
- Realize surveys
|
||||
- Point of Sale
|
||||
|
||||
### Other modules:
|
||||
|
||||
- Bookmarks management
|
||||
- Can reports Dolibarr events inside Webcalendar or Phenix
|
||||
- Data export tools
|
||||
- Donations management
|
||||
- Reporting
|
||||
- Data export/import tools
|
||||
- LDAP connectivity
|
||||
- Third parties or products categories
|
||||
- ClickToDial phone numbers
|
||||
- RSS
|
||||
- RSS integration
|
||||
|
||||
### Miscellaneous:
|
||||
|
||||
@ -123,11 +125,11 @@ See ChangeLog file found into package.
|
||||
|
||||
This is features that Dolibarr does not support completely yet:
|
||||
|
||||
- No accountancy (only bank management).
|
||||
- No double party accountancy (only bank management).
|
||||
- Dolibarr manage one currency at once (mono-currency).
|
||||
- Dolibarr manage one company/foundation (mono-company). If you want to manage several companies or foundations, you must install several time the software (on same server or not). Another solution is to extend Dolibarr with the addon Module MultiCompany that allows to manage several companies in one Dolibarr instance (one database but with a logical isolation of datas).
|
||||
- Dolibarr manage one master company/foundation (mono-company). If you want to manage several companies or foundations, you must install several time the software (on same server or not). Another solution is to extend Dolibarr with the addon Module MultiCompany that allows to manage several companies in one Dolibarr instance (one database but with a logical isolation of datas).
|
||||
- Does not support double VAT (Federal / provincial) for Canada.
|
||||
- Dolibarr does not contains Payroll module.
|
||||
- Tasks on module project can't have dependencies between each other.
|
||||
- Dolibarr does not include any Webmail.
|
||||
- Dolibarr can't do coffee (not yet).
|
||||
- Dolibarr can't do coffee (not yet).
|
||||
|
||||
@ -68,7 +68,6 @@ if ($action == 'STOCK_CALCULATE_ON_SUPPLIER_BILL'
|
||||
$res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_BILL", '','chaine',0,'',$conf->entity);
|
||||
$res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER", '','chaine',0,'',$conf->entity);
|
||||
$res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER", '','chaine',0,'',$conf->entity);
|
||||
$res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_DELETE_INVOICE", '','chaine',0,'',$conf->entity);
|
||||
if ($action == 'STOCK_CALCULATE_ON_SUPPLIER_BILL') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_BILL", GETPOST('STOCK_CALCULATE_ON_SUPPLIER_BILL','alpha'),'chaine',0,'',$conf->entity);
|
||||
if ($action == 'STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER", GETPOST('STOCK_CALCULATE_ON_SUPPLIER_VALIDATE_ORDER','alpha'),'chaine',0,'',$conf->entity);
|
||||
if ($action == 'STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER') $res=dolibarr_set_const($db, "STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER", GETPOST('STOCK_CALCULATE_ON_SUPPLIER_DISPATCH_ORDER','alpha'),'chaine',0,'',$conf->entity);
|
||||
@ -241,19 +240,6 @@ if (! empty($conf->fournisseur->enabled))
|
||||
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
|
||||
print "</form>\n</td>\n</tr>\n";
|
||||
}
|
||||
if (! empty($conf->facture->enabled))
|
||||
{
|
||||
$var=!$var;
|
||||
print "<tr ".$bc[$var].">";
|
||||
print '<td width="60%">'.$langs->trans("ReStockOnDeleteInvoice").'</td>';
|
||||
print '<td width="160" align="right">';
|
||||
print "<form method=\"post\" action=\"stock.php\">";
|
||||
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
|
||||
print "<input type=\"hidden\" name=\"action\" value=\"STOCK_CALCULATE_ON_DELETE_INVOICE\">";
|
||||
print $form->selectyesno("STOCK_CALCULATE_ON_DELETE_INVOICE",$conf->global->STOCK_CALCULATE_ON_DELETE_INVOICE,1);
|
||||
print '<input type="submit" class="button" value="'.$langs->trans("Modify").'">';
|
||||
print "</form>\n</td>\n</tr>\n";
|
||||
}
|
||||
|
||||
print '</table>';
|
||||
|
||||
|
||||
@ -932,7 +932,7 @@ if ($id > 0)
|
||||
|
||||
// Busy
|
||||
print '<tr><td class="nowrap">'.$langs->trans("Busy").'</td><td colspan="3">';
|
||||
print yn(($act->transparency > 0)?1:0);
|
||||
if ($act->usertodo->id > 0) print yn(($act->transparency > 0)?1:0); // We show nothing if event is assigned to nobody
|
||||
print '</td></tr>';
|
||||
|
||||
// Done by
|
||||
|
||||
@ -46,7 +46,7 @@ function societe_prepare_head($object)
|
||||
if ($object->client==1 || $object->client==2 || $object->client==3)
|
||||
{
|
||||
$head[$h][0] = DOL_URL_ROOT.'/comm/fiche.php?socid='.$object->id;
|
||||
$head[$h][1]='';
|
||||
$head[$h][1] = '';
|
||||
if (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && ($object->client==2 || $object->client==3)) $head[$h][1] .= $langs->trans("Prospect");
|
||||
if (empty($conf->global->SOCIETE_DISABLE_PROSPECTS) && empty($conf->global->SOCIETE_DISABLE_CUSTOMERS) && $object->client==3) $head[$h][1] .= '/';
|
||||
if (empty($conf->global->SOCIETE_DISABLE_CUSTOMERS) && ($object->client==1 || $object->client==3)) $head[$h][1] .= $langs->trans("Customer");
|
||||
@ -60,7 +60,7 @@ function societe_prepare_head($object)
|
||||
$head[$h][2] = 'supplier';
|
||||
$h++;
|
||||
}
|
||||
if (! empty($conf->agenda->enabled))
|
||||
if (! empty($conf->agenda->enabled) && !empty($user->right->agenda->lire))
|
||||
{
|
||||
$head[$h][0] = DOL_URL_ROOT.'/societe/agenda.php?socid='.$object->id;
|
||||
$head[$h][1] = $langs->trans("Agenda");
|
||||
@ -68,7 +68,7 @@ function societe_prepare_head($object)
|
||||
$h++;
|
||||
}
|
||||
//show categorie tab
|
||||
if (! empty($conf->categorie->enabled))
|
||||
if (! empty($conf->categorie->enabled) && !empty($user->right->categorie->lire))
|
||||
{
|
||||
$type = 2;
|
||||
if ($object->fournisseur) $type = 1;
|
||||
|
||||
@ -68,10 +68,10 @@ $error=0;
|
||||
print "***** ".$script_file." (".$version.") *****\n";
|
||||
|
||||
$now=dol_now('tzserver');
|
||||
$duration_value=$argv[3];
|
||||
$duration_value=isset($argv[3])?$argv[3]:-1;
|
||||
|
||||
$error = 0;
|
||||
print $script_file." launched with mode ".$mode.($duration_value?" delay=".$duration_value:"")."\n";
|
||||
print $script_file." launched with mode ".$mode.($duration_value>=0?" delay=".$duration_value:"")."\n";
|
||||
|
||||
$sql = "SELECT f.facnumber, f.total_ttc, f.date_lim_reglement as due_date,";
|
||||
$sql.= " s.rowid as sid, s.nom as name, s.email, s.default_lang";
|
||||
@ -80,7 +80,7 @@ $sql.= " FROM ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."societe as s";
|
||||
if ($targettype == 'contacts') $sql.= ", ".MAIN_DB_PREFIX."socpeople as sp";
|
||||
$sql.= " WHERE f.fk_statut != 0 AND f.paye = 0";
|
||||
$sql.= " AND f.fk_soc = s.rowid";
|
||||
if ($duration_value) $sql.= " AND f.date_lim_reglement < '".$db->idate(dol_time_plus_duree($now, $duration_value, "d"))."'";
|
||||
if ($duration_value>=0) $sql.= " AND f.date_lim_reglement < '".$db->idate(dol_time_plus_duree($now, $duration_value, "d"))."'";
|
||||
if ($targettype == 'contacts') $sql.= " AND s.rowid = sp.fk_soc";
|
||||
$sql.= " ORDER BY";
|
||||
if ($targettype == 'contacts') $sql.= " sp.email, sp.rowid,";
|
||||
|
||||
@ -68,9 +68,9 @@ $error=0;
|
||||
print "***** ".$script_file." (".$version.") *****\n";
|
||||
|
||||
$now=dol_now('tzserver');
|
||||
$duration_value=$argv[2];
|
||||
$duration_value=isset($argv[2])?$argv[2]:-1;
|
||||
|
||||
print $script_file." launched with mode ".$mode.($duration_value?" delay=".$duration_value:"")."\n";
|
||||
print $script_file." launched with mode ".$mode.($duration_value>=0?" delay=".$duration_value:"")."\n";
|
||||
|
||||
$sql = "SELECT f.facnumber, f.total_ttc, f.date_lim_reglement as due_date, s.nom as name, u.rowid as uid, u.lastname, u.firstname, u.email, u.lang";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
|
||||
@ -79,7 +79,7 @@ $sql .= " , ".MAIN_DB_PREFIX."societe_commerciaux as sc";
|
||||
$sql .= " , ".MAIN_DB_PREFIX."user as u";
|
||||
$sql .= " WHERE f.fk_statut != 0 AND f.paye = 0";
|
||||
$sql .= " AND f.fk_soc = s.rowid";
|
||||
if ($duration_value) $sql .= " AND f.date_lim_reglement < '".$db->idate(dol_time_plus_duree($now, $duration_value, "d"))."'";
|
||||
if ($duration_value>=0) $sql .= " AND f.date_lim_reglement < '".$db->idate(dol_time_plus_duree($now, $duration_value, "d"))."'";
|
||||
$sql .= " AND sc.fk_soc = s.rowid";
|
||||
$sql .= " AND sc.fk_user = u.rowid";
|
||||
$sql .= " ORDER BY u.email ASC, s.rowid ASC"; // Order by email to allow one message per email
|
||||
@ -146,10 +146,10 @@ if ($resql)
|
||||
{
|
||||
envoi_mail($mode,$oldemail,$message,$total,$oldlang,$oldsalerepresentative);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($oldemail != 'none') print "- No email sent for ".$oldsalerepresentative.", total: ".$total."\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($oldemail != 'none') print "- No email sent for ".$oldsalerepresentative.", total: ".$total."\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -184,7 +184,7 @@ function envoi_mail($mode,$oldemail,$message,$total,$userlang,$oldsalerepresenta
|
||||
$newlangs->load("main");
|
||||
$newlangs->load("bills");
|
||||
|
||||
$subject = "[".(empty($conf->global->MAIN_APPLICATION_TITLE)?'Dolibarr':$conf->global->MAIN_APPLICATION_TITLE)."] ".$newlangs->trans("ListOfYourUnpaidInvoices");
|
||||
$subject = "[".(empty($conf->global->MAIN_APPLICATION_TITLE)?'Dolibarr':$conf->global->MAIN_APPLICATION_TITLE)."] ".$newlangs->transnoentities("ListOfYourUnpaidInvoices");
|
||||
$sendto = $oldemail;
|
||||
$from = $conf->global->MAIN_MAIL_EMAIL_FROM;
|
||||
$errorsto = $conf->global->MAIN_MAIL_ERRORS_TO;
|
||||
@ -204,7 +204,7 @@ function envoi_mail($mode,$oldemail,$message,$total,$userlang,$oldsalerepresenta
|
||||
}
|
||||
else
|
||||
{
|
||||
$allmessage.= "List of unpaid invoices".($usehtml?"<br>\n":"\n").($usehtml?"<br>\n":"\n");
|
||||
$allmessage.= $newlangs->transnoentities("ListOfYourUnpaidInvoices").($usehtml?"<br>\n":"\n").($usehtml?"<br>\n":"\n");
|
||||
$allmessage.= "Note: This list contains only invoices for third parties you are linked to as a sale representative.".($usehtml?"<br>\n":"\n");
|
||||
}
|
||||
$allmessage.= $message.($usehtml?"<br>\n":"\n");
|
||||
|
||||
Loading…
Reference in New Issue
Block a user