action presign/prevalidate + action sign/validate + Traductions

This commit is contained in:
Adrien Raze 2020-09-02 15:20:10 +02:00
parent 63f89950c0
commit d6113acfc8
2 changed files with 112 additions and 0 deletions

View File

@ -472,6 +472,8 @@ if ($resql)
'generate_doc'=>$langs->trans("ReGeneratePDF"),
'builddoc'=>$langs->trans("PDFMerge"),
'presend'=>$langs->trans("SendByMail"),
'prevalidate'=>$langs->trans("Validate"),
'presign'=>$langs->trans("Sign"),
);
if ($user->rights->propal->supprimer) $arrayofmassactions['predelete'] = '<span class="fa fa-trash paddingrightonly"></span>'.$langs->trans("Delete");
if ($user->rights->propal->cloturer) $arrayofmassactions['closed'] = $langs->trans("Close");
@ -502,6 +504,45 @@ if ($resql)
$trackid = 'pro'.$object->id;
include DOL_DOCUMENT_ROOT.'/core/tpl/massactions_pre.tpl.php';
if ($massaction == 'prevalidate')
{
$cpt = 0;
$refs = array();
$ids = array();
foreach ($toselect as $checked){
$sqlp = "SELECT ref, rowid FROM " . MAIN_DB_PREFIX . "propal WHERE rowid = " .$checked." AND rowid NOT IN";
$sqlp .= " (SELECT fk_propal FROM " . MAIN_DB_PREFIX . "propaldet)";
$resqlp = $db->query($sqlp);
if ($resqlp){
$objp = $db->fetch_object($resqlp);
if ($db->num_rows($resqlp)){
$cpt++;
$refs[] = $objp->ref;
$ids[] = $objp->rowid;
}
} else {
dol_print_error($db);
}
}
if ($cpt > 0)
{
if($cpt==1) setEventMessage($langs->trans('Warning').',&nbsp;'.$cpt.'&nbsp;'.$langs->trans('PropNoProductOrService'), 'warnings');
if ($cpt>1) setEventMessage($langs->trans('Warning').',&nbsp;'.$cpt.'&nbsp;'.$langs->trans('PropsNoProductOrService'), 'warnings');
$cpt2 = 0;
foreach ($ids as $r)
{
setEventMessage("<a href='".DOL_URL_ROOT."/comm/propal/card.php?id=".$r."'>".$refs[$cpt2]."</a>", 'warnings');
$cpt2++;
}
}
print $form->formconfirm($_SERVER["PHP_SELF"], $langs->trans("ConfirmMassValidation"), $langs->trans("ConfirmMassValidationQuestion"), "validate", null, '', 0, 200, 500, 1);
}
if ($massaction == 'presign')
{
print $form->formconfirm($_SERVER["PHP_SELF"], $langs->trans("ConfirmMassSignature"), $langs->trans("ConfirmMassSignatureQuestion"), "sign", null, '', 0, 200, 500, 1);
}
if ($sall)
{
foreach ($fieldstosearchall as $key => $val) $fieldstosearchall[$key] = $langs->trans($val);
@ -1270,6 +1311,65 @@ if ($resql)
$delallowed = $user->rights->propal->creer;
print $formfile->showdocuments('massfilesarea_proposals', '', $filedir, $urlsource, 0, $delallowed, '', 1, 1, 0, 48, 1, $param, $title, '', '', '', null, $hidegeneratedfilelistifempty);
if ($action == 'validate'){
if (GETPOST('confirm') == 'yes'){
foreach ($toselect as $checked){
$sql = "SELECT ref, fk_statut AS statut FROM ".MAIN_DB_PREFIX."propal WHERE rowid = ".$checked;
$resql = $db->query($sql);
if ($resql){
$obj = $db->fetch_object($resql);
$ref = substr($obj->ref, 1, 4);
if ($ref == 'PROV') {
$numref = $object->getNextNumRef($soc);
if (empty($numref)) {
setEventMessages($object->error, $object->errors, 'errors');
}
} else {
$numref = $obj->ref;
}
if ($obj->statut == 0){
$sql = "UPDATE ".MAIN_DB_PREFIX."propal SET fk_statut = 1, ref ='".$numref."' WHERE rowid = ".$checked;
$resql = $db->query($sql);
if ($resql){
setEventMessage($numref." ".$langs->trans('PassedInOpenStatus'), 'mesgs');
} else {
dol_print_error($db);
}
}else {
setEventMessage($numref." ".$langs->trans('IsNotADraft'), 'errors');
}
} else {
dol_print_error($db);
}
}
}
}
if ($action == "sign") {
if (GETPOST('confirm') == 'yes'){
foreach ($toselect as $checked) {
$sqlp = "SELECT ref, fk_statut AS statut FROM " . MAIN_DB_PREFIX . "propal WHERE rowid = " . $checked;
$resqlp = $db->query($sqlp);
if ($resqlp) {
$objp = $db->fetch_object($resqlp);
if ($objp->statut == 1) {
$sqlp = "UPDATE " . MAIN_DB_PREFIX . "propal SET fk_statut = 2 WHERE rowid = " . $checked;
$resqlp = $db->query($sqlp);
if ($resqlp) {
setEventMessage($objp->ref . " " . $langs->trans('Signed'), 'mesgs');
} else {
dol_print_error($db);
}
} else {
setEventMessage($objp->ref . " " . $langs->trans('CantBeSign'), 'errors');
}
} else {
dol_print_error($db);
}
}
}
}
} else {
dol_print_error($db);
}

View File

@ -85,3 +85,15 @@ ProposalCustomerSignature=Cachet, Date, Signature et mention "Bon pour Accord"
ProposalsStatisticsSuppliers=Statistiques de propositions commerciales
CaseFollowedBy=Affaire suivie par
SignedOnly=Signé seulement
IsNotADraft = n'est pas un brouillon
PassedInOpenStatus = passé au statut "ouvert"
CantBeSign = ne peut pas être signée
Sign = Signer
Signed = signé
CantBeSign = ne peut pas être signé
ConfirmMassValidation = Confirmer la validation ?
ConfirmMassSignature = Confirmer la signature ?
ConfirmMassValidationQuestion = Voulez-vous confirmer la validation des devis brouillons selectionnés ?
ConfirmMassSignatureQuestion = Voulez-vous confirmer la signature des devis ouvert selectionnés ?
PropNoProductOrService = devis ne contient pas de produits ni de services
PropsNoProductOrService = devis ne contiennent pas de produits ni de services