From 45875d305a966cfee37ccf1bcfbe33a6adf7efcb Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Thu, 7 Feb 2019 15:46:02 +0100 Subject: [PATCH] FEAT #9205 Senders Recipients for summary sheets --- .../actions/sendToExternalSignatureBook.php | 2 - .../controllers/AttachmentController.php | 2 +- .../controllers/SummarySheetController.php | 75 +++++++++++++++++++ .../controllers/AutoCompleteController.php | 14 +++- src/core/lang/lang-en.php | 8 +- src/core/lang/lang-fr.php | 8 +- src/core/lang/lang-nl.php | 32 +++++--- 7 files changed, 116 insertions(+), 25 deletions(-) diff --git a/apps/maarch_entreprise/actions/sendToExternalSignatureBook.php b/apps/maarch_entreprise/actions/sendToExternalSignatureBook.php index 00956ba0449..d9c7ba1750b 100755 --- a/apps/maarch_entreprise/actions/sendToExternalSignatureBook.php +++ b/apps/maarch_entreprise/actions/sendToExternalSignatureBook.php @@ -287,8 +287,6 @@ function get_value_fields($values, $field) function hasAttachmentError() { - $isMailingAttach = \Attachment\controllers\AttachmentController::isMailingAttach(["resIdMaster" => $_SESSION['doc_id'], "userId" => $_SESSION['user']['UserId']]); - if (!empty($_SESSION['stockCheckbox'])) { $resIds = $_SESSION['stockCheckbox']; } else { diff --git a/src/app/attachment/controllers/AttachmentController.php b/src/app/attachment/controllers/AttachmentController.php index 84078c648aa..3828ab96b9e 100755 --- a/src/app/attachment/controllers/AttachmentController.php +++ b/src/app/attachment/controllers/AttachmentController.php @@ -493,7 +493,7 @@ class AttachmentController return ['success' => 'success']; } - public function isMailingAttach(array $aArgs) + public static function isMailingAttach(array $aArgs) { if (!Validator::intVal()->validate($aArgs['resIdMaster']) || !ResController::hasRightByResId(['resId' => $aArgs['resIdMaster'], 'userId' => $aArgs['userId']])) { return ['errors' => 'Document out of perimeter']; diff --git a/src/app/resource/controllers/SummarySheetController.php b/src/app/resource/controllers/SummarySheetController.php index fb20f99c1d4..e40084a4292 100644 --- a/src/app/resource/controllers/SummarySheetController.php +++ b/src/app/resource/controllers/SummarySheetController.php @@ -17,19 +17,23 @@ namespace Resource\controllers; use Basket\models\BasketModel; use chillerlan\QRCode\QRCode; use chillerlan\QRCode\QROptions; +use Contact\models\ContactModel; use Entity\models\EntityModel; use Entity\models\ListInstanceModel; use Note\models\NoteEntityModel; use Note\models\NoteModel; use Priority\models\PriorityModel; use Resource\models\ResModel; +use Resource\models\ResourceContactModel; use Resource\models\ResourceListModel; use Respect\Validation\Validator; use setasign\Fpdi\Tcpdf\Fpdi; use Slim\Http\Request; use Slim\Http\Response; +use SrcCore\controllers\AutoCompleteController; use SrcCore\controllers\PreparedClauseController; use SrcCore\models\CoreConfigModel; +use SrcCore\models\DatabaseModel; use SrcCore\models\TextFormatModel; use SrcCore\models\ValidatorModel; use Status\models\StatusModel; @@ -215,6 +219,77 @@ class SummarySheetController $pdf->MultiCell($widthNoMargins / 2, 20, _STATUS . " : {$status}", 1, 'L', false, 1, '', '', true, 0, true); $pdf->MultiCell($widthNoMargins / 2, 20, _PRIORITY . " : {$priority}", 1, 'L', false, 0, '', '', true, 0, true); $pdf->MultiCell($widthNoMargins / 2, 20, _PROCESS_LIMIT_DATE . " : {$processLimitDate}", 1, 'L', false, 1, '', '', true, 0, true); + } elseif ($unit['unit'] == 'senderRecipientInformations') { + $ext = ResModel::getExtById(['select' => ['category_id', 'address_id', 'exp_user_id', 'dest_user_id', 'is_multicontacts'], 'resId' => $resource['res_id']]); + + if (!empty($ext)) { + $resourcesContacts = ResourceContactModel::getFormattedByResId(['resId' => $resource['res_id']]); + $oldContacts = []; + $rawContacts = []; + if ($ext['is_multicontacts'] == 'Y') { + $multiContacts = DatabaseModel::select([ + 'select' => ['contact_id', 'address_id'], + 'table' => ['contacts_res'], + 'where' => ['res_id = ?', 'mode = ?'], + 'data' => [$resource['res_id'], 'multi'] + ]); + foreach ($multiContacts as $multiContact) { + $rawContacts[] = [ + 'login' => $multiContact['contact_id'], + 'address_id' => $multiContact['address_id'], + ]; + } + } else { + $rawContacts[] = [ + 'login' => $ext['dest_user_id'], + 'address_id' => $ext['address_id'], + ]; + } + foreach ($rawContacts as $rawContact) { + if (!empty($rawContact['address_id'])) { + $contact = ContactModel::getOnView([ + 'select' => [ + 'is_corporate_person', 'lastname', 'firstname', 'address_num', 'address_street', 'address_town', 'address_postal_code', + 'ca_id', 'society', 'contact_firstname', 'contact_lastname', 'address_country' + ], + 'where' => ['ca_id = ?'], + 'data' => [$rawContact['address_id']] + ]); + if (isset($contact[0])) { + $contact = AutoCompleteController::getFormattedContact(['contact' => $contact[0]]); + $oldContacts[] = ['format' => $contact['contact']['otherInfo']]; + } + + } else { + $oldContacts[] = ['format' => UserModel::getLabelledUserById(['login' => $rawContact['login']])]; + } + } + if ($ext['category_id'] == 'outgoing') { + $senders = $resourcesContacts; + $recipients = $oldContacts; + } else { + $senders = $oldContacts; + $recipients = $resourcesContacts; + } + + $pdf->SetY($pdf->GetY() + 40); + if (($pdf->GetY() + 57) > $bottomHeight) { + $pdf->AddPage(); + } + $pdf->SetFont('', 'B', 11); + $pdf->Cell(0, 15, $unit['label'], 0, 2, 'L', false); + $pdf->SetY($pdf->GetY() + 2); + + $pdf->SetFont('', '', 10); + $pdf->Cell($widthNoMargins / 10 * 4.5, 15, _SENDERS, 1, 0, 'C', false); + $pdf->Cell($widthNoMargins / 10, 15, '', 0, 0, 'C', false); + $pdf->Cell($widthNoMargins / 10 * 4.5, 15, _RECIPIENTS, 1, 1, 'C', false); + for ($i = 0; !empty($senders[$i]) || !empty($recipients[$i]); $i++) { + $pdf->MultiCell($widthNoMargins / 10 * 4.5, 40, empty($senders[$i]['format']) ? '' : $senders[$i]['format'], empty($senders[$i]['format']) ? 0 : 1, 'L', false, 0, '', '', true, 0, true); + $pdf->MultiCell($widthNoMargins / 10, 40, '', 0, 'L', false, 0, '', '', true, 0, true); + $pdf->MultiCell($widthNoMargins / 10 * 4.5, 40, empty($recipients[$i]['format']) ? '' : $recipients[$i]['format'], empty($recipients[$i]['format']) ? 0 : 1, 'L', false, 1, '', '', true, 0, true); + } + } } elseif ($unit['unit'] == 'diffusionList') { $assignee = ''; $copies = []; diff --git a/src/core/controllers/AutoCompleteController.php b/src/core/controllers/AutoCompleteController.php index f54ac998b4e..e5eb28ed9bb 100755 --- a/src/core/controllers/AutoCompleteController.php +++ b/src/core/controllers/AutoCompleteController.php @@ -529,11 +529,14 @@ class AutoCompleteController if (!empty($aArgs['contact']['address_street'])) { $address.= $aArgs['contact']['address_street'] . ' '; } + if (!empty($aArgs['contact']['address_postal_code'])) { + $address.= $aArgs['contact']['address_postal_code'] . ' '; + } if (!empty($aArgs['contact']['address_town'])) { $address.= $aArgs['contact']['address_town'] . ' '; } - if (!empty($aArgs['contact']['address_postal_code'])) { - $address.= $aArgs['contact']['address_postal_code'] . ' '; + if (!empty($aArgs['contact']['address_country'])) { + $address.= $aArgs['contact']['address_country']; } $otherInfo = empty($address) ? "{$aArgs['contact']['society']}" : "{$aArgs['contact']['society']} - {$address}"; $contact = [ @@ -552,11 +555,14 @@ class AutoCompleteController if (!empty($aArgs['contact']['address_street'])) { $address.= $aArgs['contact']['address_street'] . ' '; } + if (!empty($aArgs['contact']['address_postal_code'])) { + $address.= $aArgs['contact']['address_postal_code'] . ' '; + } if (!empty($aArgs['contact']['address_town'])) { $address.= $aArgs['contact']['address_town'] . ' '; } - if (!empty($aArgs['contact']['address_postal_code'])) { - $address.= $aArgs['contact']['address_postal_code'] . ' '; + if (!empty($aArgs['contact']['address_country'])) { + $address.= $aArgs['contact']['address_country']; } $contactToDisplay = "{$aArgs['contact']['contact_firstname']} {$aArgs['contact']['contact_lastname']}"; if (!empty($aArgs['contact']['society'])) { diff --git a/src/core/lang/lang-en.php b/src/core/lang/lang-en.php index 14ec9b2ba83..385f2bb553a 100755 --- a/src/core/lang/lang-en.php +++ b/src/core/lang/lang-en.php @@ -42,6 +42,9 @@ define('_DOCSERVER_ADDED', 'Docserver added'); define('_DOCSERVER_UPDATED', 'Docserver updated'); define('_DOCSERVER_DELETED', 'Docserver deleted'); define('_DOCSERVER_ACTIVATED_EXISTS', 'A docserver with this type and this collection is already activated'); +define('_DOCTYPE_UPDATED', 'Document type updated'); +define('_DOCTYPE_ADDED', 'Document type added'); +define('_DOCTYPE_DELETED', 'Document type deleted'); define('_DOCTYPE_FIRSTLEVEL_ADDED', 'Doctype first level added'); define('_DOCTYPE_FIRSTLEVEL_DELETED', 'Doctype first level deleted'); define('_DOCTYPE_FIRSTLEVEL_UPDATED', 'Doctype first level edited'); @@ -142,9 +145,6 @@ define('_DOCUMENTS_LIST_COPIES', 'List of copies'); define('_CASES_LIST', 'Cases list'); define('_DOCUMENTS_LIST_WITH_SIGNATORY', 'Documents list with signatory'); define('_FOLDERS_LIST', 'folders list'); -define('_DOCTYPE_UPDATED', 'Document type updated'); -define('_DOCTYPE_ADDED', 'Document type added'); -define('_DOCTYPE_DELETED', 'Document type deleted'); // ADMINISTRATION define('_USERS', 'Users'); @@ -426,6 +426,8 @@ define('_ASSIGNEE', 'Assignee'); define('_SUMMARY_SHEET', 'Summary sheet'); define('_UNDEFINED', 'Undefined'); define('_CATEGORY', 'Category'); +define('_SENDERS', 'Sender(s)'); +define('_RECIPIENTS', 'Recipient(s)'); define('_CHRONO_NUMBER', 'Chrono number'); define('_INITIATOR_ENTITY', 'Initiator entity'); define('_DESTINATION_ENTITY', 'Destination entity'); diff --git a/src/core/lang/lang-fr.php b/src/core/lang/lang-fr.php index 6627ea08b36..0616193db16 100755 --- a/src/core/lang/lang-fr.php +++ b/src/core/lang/lang-fr.php @@ -42,6 +42,9 @@ define('_DOCSERVER_ADDED', 'Zone de stockage ajoutée'); define('_DOCSERVER_UPDATED', 'Zone de stockage modifiée'); define('_DOCSERVER_DELETED', 'Zone de stockage supprimée'); define('_DOCSERVER_ACTIVATED_EXISTS', 'Une zone de stockage avec le même type et la même collection est déjà activée'); +define('_DOCTYPE_UPDATED', 'Type de document modifié'); +define('_DOCTYPE_ADDED', 'Type de document ajouté'); +define('_DOCTYPE_DELETED', 'Type de document supprimé'); define('_DOCTYPE_FIRSTLEVEL_ADDED', 'Chemise ajoutée'); define('_DOCTYPE_FIRSTLEVEL_DELETED', 'Chemise supprimée'); define('_DOCTYPE_FIRSTLEVEL_UPDATED', 'Chemise modifiée'); @@ -142,9 +145,6 @@ define('_DOCUMENTS_LIST_COPIES', 'Liste des copies'); define('_CASES_LIST', 'Liste des affaires'); define('_DOCUMENTS_LIST_WITH_SIGNATORY', 'Liste des documents avec signataire'); define('_FOLDERS_LIST', 'Liste de dossiers'); -define('_DOCTYPE_UPDATED', 'Type de document modifié'); -define('_DOCTYPE_ADDED', 'Type de document ajouté'); -define('_DOCTYPE_DELETED', 'Type de document supprimé'); // ADMINISTRATION define('_USERS', 'Utilisateurs'); @@ -426,6 +426,8 @@ define('_ASSIGNEE', 'Attributaire'); define('_SUMMARY_SHEET', 'Fiche de liaison'); define('_UNDEFINED', 'Non définie'); define('_CATEGORY', 'Catégorie'); +define('_SENDERS', 'Expéditeur(s)'); +define('_RECIPIENTS', 'Destinataire(s)'); define('_CHRONO_NUMBER', 'Numéro chrono'); define('_INITIATOR_ENTITY', 'Entité initiatrice'); define('_DESTINATION_ENTITY', 'Entité traitante'); diff --git a/src/core/lang/lang-nl.php b/src/core/lang/lang-nl.php index 92ad8ab7c2f..2be9be43468 100644 --- a/src/core/lang/lang-nl.php +++ b/src/core/lang/lang-nl.php @@ -32,6 +32,9 @@ define('_BASKETS_SORT_MODIFICATION', 'Wijziging volgorde bakje'); define('_BY_DEFAULT', 'standaard'); define('_DELETE_NOTIFICATIONS', 'Melding verwijderd'); define('_DEST_USER', 'Ontvanger'); +define('_DOCTYPE_UPDATED', 'Documenttype gewijzigd'); +define('_DOCTYPE_ADDED', 'Documenttype toegevoegd'); +define('_DOCTYPE_DELETED', 'Documenttype verwijderd'); define('_DOCTYPE_FIRSTLEVEL_ADDED', 'Map toegevoegd'); define('_DOCTYPE_FIRSTLEVEL_DELETED', 'Map verwijderd'); define('_DOCTYPE_FIRSTLEVEL_UPDATED', 'Map gewijzigd'); @@ -81,15 +84,6 @@ define('_USER_ENTITY_SUPPRESSION', 'Verwijderde eenheid voor gebruiker'); define('_VISA_USER', 'Voor goedkeuring'); define('_WRONG_FILE_TYPE', 'Dit bestandstype is niet toegelaten'); define('_CAN_NOT_MOVE_IN_CHILD_ENTITY', 'De bovenliggende eenheid mag niet in een onderliggende eenheid zitten'); -define('_DOCUMENTS_LIST_WITH_ATTACHMENTS', 'Lijst met filters en antwoorden'); -define('_DOCUMENTS_LIST_WITH_AVIS', 'Lijst van de documenten met berichten'); -define('_DOCUMENTS_LIST_COPIES', 'Lijst van de kopieën'); -define('_CASES_LIST', 'Lijst van de zaken'); -define('_DOCUMENTS_LIST_WITH_SIGNATORY', 'Lijst van de documenten met ondertekenaar'); -define('_FOLDERS_LIST', 'Lijst van de mappen'); -define('_DOCTYPE_UPDATED', 'Documenttype gewijzigd'); -define('_DOCTYPE_ADDED', 'Documenttype toegevoegd'); -define('_DOCTYPE_DELETED', 'Documenttype verwijderd'); define('_QUOTA_EXCEEDED', 'Quota overschreden'); define('_CONTACTS_GROUP_ADDED', 'Toegevoegde contactengroep'); define('_CONTACTS_GROUP_UPDATED', 'Gewijzigde contactengroep'); @@ -142,6 +136,15 @@ define('_BACK_FROM_VACATION', 'bij terugkeer na afwezigheid'); define('_DOC_DISPLAYING', 'Weergave van het document'); define('_DOC_ADDED', 'Document toegevoegd'); define('_ATTACH_DISPLAYING', 'Weergave van de bijlage'); +define('_NOTE_ADDED', 'note added _TO_TRANSLATE'); + +// LISTS +define('_DOCUMENTS_LIST_WITH_ATTACHMENTS', 'Lijst met filters en antwoorden'); +define('_DOCUMENTS_LIST_WITH_AVIS', 'Lijst van de documenten met berichten'); +define('_DOCUMENTS_LIST_COPIES', 'Lijst van de kopieën'); +define('_CASES_LIST', 'Lijst van de zaken'); +define('_DOCUMENTS_LIST_WITH_SIGNATORY', 'Lijst van de documenten met ondertekenaar'); +define('_FOLDERS_LIST', 'Lijst van de mappen'); // ADMINISTRATION define('_USERS', 'Gebruikers'); @@ -188,6 +191,8 @@ define('_ADMIN_NOTIFICATIONS_DESC', 'Meldingen voor de gebruikers aanmaken en be define('_TEMPLATES', 'Documentmodellen'); define('_ADMIN_TEMPLATES_DESC', 'De modellen die voor de bijlagen gebruikt worden, de meldingen, de aanmaak van brieven, het verzenden van e-mails en de opmerkingen beheren'); define('_SECURITIES', 'Veiligheden'); +define('_EMAILSERVER_PARAM', '_TO_TRANSLATE'); +define('_EMAILSERVER_PARAM_DESC', '_TO_TRANSLATE'); //SERVICES define('_REDIRECT_TO_ACTION', 'Doorsturen naar een andere actie'); @@ -383,6 +388,8 @@ define('_CHECK_REPLY', 'Controle van het antwoord op de transfer'); define('_PURGE_LETTER', 'De brief vrijmaken na de archivering'); define('_RESET_LETTER', 'Reset van het verwerkingscircuit'); define('_SIMPLE_CONFIRM_WITH_UPDATE_DATE', 'Bevestiging en bijwerking van de vertrekdatum'); + +// REPORTS define('_FOLDER_VIEW_STAT', 'Aantal geraadpleegde mappen'); define('_ENTITY_VOL_STAT', 'Briefvolume per eenheid'); define('_ENTITY_VOL_STAT_DESC', 'Om het aantal brieven weer te geven dat per dienst bewaard wordt.'); @@ -399,6 +406,8 @@ define('_MAIL_TYPOLOGY_REPORT', 'Briefvolume per typologie'); define('_MAIL_TYPOLOGY_REPORT_DESC', 'Om het aantal brieven weer te geven dat per documenttype bewaard wordt.'); define('_MAIL_VOL_BY_CAT_REPORT', 'Briefvolume per categorie'); define('_MAIL_VOL_BY_CAT_REPORT_DESC', 'Om het aantal brieven weer te geven dat per categorie (inkomend, uitgaand enz.) bewaard wordt.'); + +//ATTACHMENT TYPES define('_RESPONSE_PROJECT', 'Antwoordontwerp'); define('_SIGNED_RESPONSE', 'Ondertekend antwoord'); define('_OUTGOING_MAIL_SIGNED', 'Brief vertrek ondertekend'); @@ -413,13 +422,12 @@ define('_SVA', 'Stilzwijgende aanvaarding'); define('_SVR', 'Stilzwijgende weigering'); define('_REDACTOR', 'Opsteller'); define('_ASSIGNEE', 'Toegekende persoon'); -define('_EMAILSERVER_PARAM', '_TO_TRANSLATE'); -define('_EMAILSERVER_PARAM_DESC', '_TO_TRANSLATE'); -define('_NOTE_ADDED', 'note added _TO_TRANSLATE'); define('_SUMMARY_SHEET', 'Summary sheet_TO_TRANSLATE'); define('_UNDEFINED', 'Undefined_TO_TRANSLATE'); define('_CATEGORY', 'Category_TO_TRANSLATE'); +define('_SENDERS', 'Sender(s)_TO_TRANSLATE'); +define('_RECIPIENTS', 'Recipient(s)_TO_TRANSLATE'); define('_CHRONO_NUMBER', 'Chrono number_TO_TRANSLATE'); define('_INITIATOR_ENTITY', 'Initiator entity_TO_TRANSLATE'); define('_DESTINATION_ENTITY', 'Destination entity_TO_TRANSLATE'); -- GitLab