2
0
forked from Wavyzz/dolibarr

Merge branch '16.0' of git@github.com:Dolibarr/dolibarr.git into develop

This commit is contained in:
Laurent Destailleur
2022-10-21 13:22:27 +02:00
7 changed files with 46 additions and 21 deletions

View File

@@ -698,6 +698,9 @@ ALTER TABLE llx_eventorganization_conferenceorboothattendee ADD COLUMN firstnam
ALTER TABLE llx_eventorganization_conferenceorboothattendee ADD COLUMN lastname varchar(100); ALTER TABLE llx_eventorganization_conferenceorboothattendee ADD COLUMN lastname varchar(100);
ALTER TABLE llx_eventorganization_conferenceorboothattendee ADD COLUMN email_company varchar(128) after email; ALTER TABLE llx_eventorganization_conferenceorboothattendee ADD COLUMN email_company varchar(128) after email;
-- VMYSQL4.3 ALTER TABLE llx_eventorganization_conferenceorboothattendee MODIFY COLUMN fk_user_creat integer NULL;
-- VPGSQL8.2 ALTER TABLE llx_eventorganization_conferenceorboothattendee ALTER COLUMN fk_user_creat DROP NOT NULL;
ALTER TABLE llx_c_email_templates ADD COLUMN joinfiles text; ALTER TABLE llx_c_email_templates ADD COLUMN joinfiles text;
ALTER TABLE llx_c_email_templates ADD COLUMN email_from varchar(255); ALTER TABLE llx_c_email_templates ADD COLUMN email_from varchar(255);

View File

@@ -122,7 +122,7 @@ ViewAndVote = View and vote for suggested events
PublicAttendeeSubscriptionGlobalPage = Public link for registration to the event PublicAttendeeSubscriptionGlobalPage = Public link for registration to the event
PublicAttendeeSubscriptionPage = Public link for registration to this event only PublicAttendeeSubscriptionPage = Public link for registration to this event only
MissingOrBadSecureKey = The security key is invalid or missing MissingOrBadSecureKey = The security key is invalid or missing
EvntOrgWelcomeMessage = This form allows you to register as a new participant to the event : <b>%s</b> EvntOrgWelcomeMessage = This form allows you to register as a new participant to the event
EvntOrgDuration = This conference starts on %s and ends on %s. EvntOrgDuration = This conference starts on %s and ends on %s.
ConferenceAttendeeFee = Conference attendee fee for the event : '%s' occurring from %s to %s. ConferenceAttendeeFee = Conference attendee fee for the event : '%s' occurring from %s to %s.
BoothLocationFee = Booth location for the event : '%s' occurring from %s to %s BoothLocationFee = Booth location for the event : '%s' occurring from %s to %s
@@ -132,7 +132,7 @@ LabelOfconference=Conference label
ConferenceIsNotConfirmed=Registration not available, conference is not confirmed yet ConferenceIsNotConfirmed=Registration not available, conference is not confirmed yet
DateMustBeBeforeThan=%s must be before %s DateMustBeBeforeThan=%s must be before %s
DateMustBeAfterThan=%s must be after %s DateMustBeAfterThan=%s must be after %s
MaxNbOfAttendeesReached=The maximum number of participants has been reached
NewSubscription=Registration NewSubscription=Registration
OrganizationEventConfRequestWasReceived=Your suggestion for a conference has been received OrganizationEventConfRequestWasReceived=Your suggestion for a conference has been received
OrganizationEventBoothRequestWasReceived=Your request for a booth has been received OrganizationEventBoothRequestWasReceived=Your request for a booth has been received
@@ -157,7 +157,7 @@ VoteOk = Your vote has been accepted.
AlreadyVoted = You have already voted for this event. AlreadyVoted = You have already voted for this event.
VoteError = An error has occurred during the vote, please try again. VoteError = An error has occurred during the vote, please try again.
SubscriptionOk = Your registration has been validated SubscriptionOk=Your registration has been recorded
ConfAttendeeSubscriptionConfirmation = Confirmation of your subscription to an event ConfAttendeeSubscriptionConfirmation = Confirmation of your subscription to an event
Attendee = Attendee Attendee = Attendee
PaymentConferenceAttendee = Conference attendee payment PaymentConferenceAttendee = Conference attendee payment
@@ -165,6 +165,7 @@ PaymentBoothLocation = Booth location payment
DeleteConferenceOrBoothAttendee=Remove attendee DeleteConferenceOrBoothAttendee=Remove attendee
RegistrationAndPaymentWereAlreadyRecorder=A registration and a payment were already recorded for the email <b>%s</b> RegistrationAndPaymentWereAlreadyRecorder=A registration and a payment were already recorded for the email <b>%s</b>
EmailAttendee=Attendee email EmailAttendee=Attendee email
EmailCompany=Company email
EmailCompanyForInvoice=Company email (for invoice, if different of attendee email) EmailCompanyForInvoice=Company email (for invoice, if different of attendee email)
ErrorSeveralCompaniesWithEmailContactUs=Several companies with this email has been found so we can't validate automaticaly your registration. Please contact us at %s for a manual validation ErrorSeveralCompaniesWithEmailContactUs=Several companies with this email has been found so we can't validate automaticaly your registration. Please contact us at %s for a manual validation
ErrorSeveralCompaniesWithNameContactUs=Several companies with this name has been found so we can't validate automaticaly your registration. Please contact us at %s for a manual validation ErrorSeveralCompaniesWithNameContactUs=Several companies with this name has been found so we can't validate automaticaly your registration. Please contact us at %s for a manual validation

View File

@@ -2249,7 +2249,7 @@ if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) {
} }
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td class="liste_titre"><input type="text" class="flat" name="search_soc" value="'.$search_soc.'" size="20"></td>'; print '<td class="liste_titre"><input type="text" class="flat maxwidth125" name="search_soc" value="'.$search_soc.'"></td>';
print '<td class="liste_titre" colspan="'.$colspan.'">&nbsp;</td>'; print '<td class="liste_titre" colspan="'.$colspan.'">&nbsp;</td>';
// Print the search button // Print the search button
print '<td class="liste_titre maxwidthsearch">'; print '<td class="liste_titre maxwidthsearch">';
@@ -2298,6 +2298,8 @@ if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) {
print '<td colspan="3">' . $langs->trans('Default') . '</td>'; print '<td colspan="3">' . $langs->trans('Default') . '</td>';
print '<td class="center">'.$langs->trans($object->price_base_type)."</td>"; print '<td class="center">'.$langs->trans($object->price_base_type)."</td>";
// VAT Rate
print '<td class="right">'; print '<td class="right">';
$positiverates = ''; $positiverates = '';
@@ -2319,12 +2321,12 @@ if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) {
//print $object->default_vat_code?' ('.$object->default_vat_code.')':''; //print $object->default_vat_code?' ('.$object->default_vat_code.')':'';
print "</td>"; print "</td>";
print '<td class="right">'.price($object->price)."</td>"; print '<td class="right"><span class="amount">'.price($object->price)."</span></td>";
print '<td class="right">'.price($object->price_ttc)."</td>"; print '<td class="right"><span class="amount">'.price($object->price_ttc)."</span></td>";
if ($mysoc->localtax1_assuj == "1" || $mysoc->localtax2_assuj == "1") { if ($mysoc->localtax1_assuj == "1" || $mysoc->localtax2_assuj == "1") {
//print '<td class="right">' . price($object->price_ttc) . "</td>"; //print '<td class="right">' . price($object->price_ttc) . "</td>";
print '<td class="right">'.price($resultarray[2]).'</td>'; print '<td class="right"><span class="amount">'.price($resultarray[2]).'</span></td>';
} }
print '<td class="right">'.price($object->price_min).'</td>'; print '<td class="right">'.price($object->price_min).'</td>';
@@ -2376,6 +2378,7 @@ if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) {
print '<td>'.dol_escape_htmltag($line->ref_customer).'</td>'; print '<td>'.dol_escape_htmltag($line->ref_customer).'</td>';
print "<td>".dol_print_date($line->datec, "dayhour", 'tzuserrel')."</td>"; print "<td>".dol_print_date($line->datec, "dayhour", 'tzuserrel')."</td>";
print '<td class="center">'.$langs->trans($line->price_base_type)."</td>"; print '<td class="center">'.$langs->trans($line->price_base_type)."</td>";
// VAT Rate
print '<td class="right">'; print '<td class="right">';
$positiverates = ''; $positiverates = '';
@@ -2395,12 +2398,13 @@ if (!empty($conf->global->PRODUIT_CUSTOMER_PRICES)) {
echo vatrate($positiverates.($line->default_vat_code ? ' ('.$line->default_vat_code.')' : ''), '%', ($line->tva_npr ? $line->tva_npr : $line->recuperableonly)); echo vatrate($positiverates.($line->default_vat_code ? ' ('.$line->default_vat_code.')' : ''), '%', ($line->tva_npr ? $line->tva_npr : $line->recuperableonly));
print "</td>"; print "</td>";
print '<td class="right"><span class="amount">'.price($line->price)."</span></td>"; print '<td class="right"><span class="amount">'.price($line->price)."</span></td>";
print '<td class="right"><span class="amount">'.price($line->price_ttc)."</span></td>"; print '<td class="right"><span class="amount">'.price($line->price_ttc)."</span></td>";
if ($mysoc->localtax1_assuj == "1" || $mysoc->localtax2_assuj == "1") { if ($mysoc->localtax1_assuj == "1" || $mysoc->localtax2_assuj == "1") {
//print '<td class="right">' . price($line->price_ttc) . "</td>"; //print '<td class="right">' . price($line->price_ttc) . "</td>";
print '<td class="right">'.price($resultarray[2]).'</td>'; print '<td class="right"><span class="amount">'.price($resultarray[2]).'</span></td>';
} }
print '<td class="right">'.price($line->price_min).'</td>'; print '<td class="right">'.price($line->price_min).'</td>';

View File

@@ -475,7 +475,7 @@ if (empty($reshook) && $action == 'add' && (!empty($conference->id) && $conferen
$resultprod = $productforinvoicerow->fetch($conf->global->SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION); $resultprod = $productforinvoicerow->fetch($conf->global->SERVICE_CONFERENCE_ATTENDEE_SUBSCRIPTION);
} }
// Create invoice // Create the draft invoice for the payment
if ($resultprod < 0) { if ($resultprod < 0) {
$error++; $error++;
$errmsg .= $productforinvoicerow->error; $errmsg .= $productforinvoicerow->error;
@@ -529,7 +529,11 @@ if (empty($reshook) && $action == 'add' && (!empty($conference->id) && $conferen
// If there is no lines yet, we add one // If there is no lines yet, we add one
if (empty($facture->lines)) { if (empty($facture->lines)) {
$result = $facture->addline($labelforproduct, floatval($project->price_registration), 1, $vattouse, 0, 0, $productforinvoicerow->id, 0, $date_start, $date_end, 0, 0, '', 'HT', 0, 1); $pu_ttc = floatval($project->price_registration);
$pu_ht = 0;
$price_base_type = 'TTC';
$result = $facture->addline($labelforproduct, $pu_ht, 1, $vattouse, 0, 0, $productforinvoicerow->id, 0, $date_start, $date_end, 0, 0, '', $price_base_type, $pu_ttc, 1);
if ($result <= 0) { if ($result <= 0) {
$confattendee->error = $facture->error; $confattendee->error = $facture->error;
$confattendee->errors = $facture->errors; $confattendee->errors = $facture->errors;
@@ -642,28 +646,32 @@ print load_fiche_titre($langs->trans("NewRegistration"), '', '', 0, 0, 'center')
print '<div align="center">'; print '<div align="center">';
print '<div id="divsubscribe">'; print '<div id="divsubscribe">';
print '<div class="center subscriptionformhelptext justify">'; print '<div class="center subscriptionformhelptext">';
// Welcome message // Welcome message
print '<span class="opacitymedium">'.$langs->trans("EvntOrgWelcomeMessage", $project->title . ' '. $conference->label).'</span>'; print '<span class="opacitymedium">'.$langs->trans("EvntOrgWelcomeMessage").'</span>';
print '<br>';
print '<span class="eventlabel">'.$project->title . ' '. $conference->label.'</span>';
print '<br>'; print '<br>';
$maxattendees = 0; $maxattendees = 0;
if ($conference->id) { if ($conference->id > 0) {
/* date of project is not date of event so commented
print $langs->trans("Date").': '; print $langs->trans("Date").': ';
print dol_print_date($conference->datep); print dol_print_date($conference->datep);
if ($conference->date_end) { if ($conference->date_end) {
print ' - '; print ' - ';
print dol_print_date($conference->datef); print dol_print_date($conference->datef);
} }*/
} else { } else {
/* date of project is not date of event so commented
print $langs->trans("Date").': '; print $langs->trans("Date").': ';
print dol_print_date($project->date_start); print dol_print_date($project->date_start);
if ($project->date_end) { if ($project->date_end) {
print ' - '; print ' - ';
print dol_print_date($project->date_end); print dol_print_date($project->date_end);
} }*/
$maxattendees = $project->max_attendees; $maxattendees = $project->max_attendees; // Max attendeed for the project/event
} }
print '</div>'; print '</div>';
@@ -674,7 +682,6 @@ if ($maxattendees && $currentnbofattendees >= $maxattendees) {
} }
print '<br>';
dol_htmloutput_errors($errmsg, $errors); dol_htmloutput_errors($errmsg, $errors);
@@ -730,7 +737,7 @@ if ((!empty($conference->id) && $conference->status == ConferenceOrBooth::STATUS
// Email company for invoice // Email company for invoice
if ($project->price_registration) { if ($project->price_registration) {
print '<tr><td>' . $langs->trans("EmailCompanyForInvoice") . '</td><td>'; print '<tr><td>' . $form->textwithpicto($langs->trans("EmailCompany"), $langs->trans("EmailCompanyForInvoice")) . '</td><td>';
print img_picto('', 'email', 'class="pictofixedwidth"'); print img_picto('', 'email', 'class="pictofixedwidth"');
print '<input type="text" name="emailcompany" maxlength="255" class="minwidth200 widthcentpercentminusx maxwidth300" value="' . dol_escape_htmltag(GETPOST('emailcompany')) . '"></td></tr>' . "\n"; print '<input type="text" name="emailcompany" maxlength="255" class="minwidth200 widthcentpercentminusx maxwidth300" value="' . dol_escape_htmltag(GETPOST('emailcompany')) . '"></td></tr>' . "\n";
} }
@@ -781,7 +788,7 @@ if ((!empty($conference->id) && $conference->status == ConferenceOrBooth::STATUS
if ($project->price_registration) { if ($project->price_registration) {
print '<tr><td>' . $langs->trans('Price') . '</td><td>'; print '<tr><td>' . $langs->trans('Price') . '</td><td>';
print price($project->price_registration, 1, $langs, 1, -1, -1, $conf->currency); print '<span class="amount price-registration">'.price($project->price_registration, 1, $langs, 1, -1, -1, $conf->currency).'</span>';
print '</td></tr>'; print '</td></tr>';
} }

View File

@@ -4875,8 +4875,13 @@ input#cardholder-name {
} }
.divmainbodylarge { margin-left: 40px; margin-right: 40px; } .divmainbodylarge { margin-left: 40px; margin-right: 40px; }
.publicnewmemberform div.titre { font-size: 2em; }
#divsubscribe { max-width: 900px; } #divsubscribe { max-width: 900px; }
#divsubscribe .eventlabel { font-size: 1.5em; }
#tablesubscribe { width: 100%; } #tablesubscribe { width: 100%; }
#tablesubscribe tr td { font-size: 1.15em; }
#tablesubscribe .price-registration { font-size: 1.5em; }
div#card-element { div#card-element {
border: 1px solid #ccc; border: 1px solid #ccc;

View File

@@ -4728,8 +4728,13 @@ span.buttonpaymentsmall {
#tablepublicpayment tr.liste_total td { border-top: none; } #tablepublicpayment tr.liste_total td { border-top: none; }
.divmainbodylarge { margin-left: 40px; margin-right: 40px; } .divmainbodylarge { margin-left: 40px; margin-right: 40px; }
.publicnewmemberform div.titre { font-size: 2em; }
#divsubscribe { max-width: 900px; } #divsubscribe { max-width: 900px; }
#divsubscribe .eventlabel { font-size: 1.5em; }
#tablesubscribe { width: 100%; } #tablesubscribe { width: 100%; }
#tablesubscribe tr td { font-size: 1.15em; }
#tablesubscribe .price-registration { font-size: 1.5em; }
div#card-element { div#card-element {
border: 1px solid #ccc; border: 1px solid #ccc;

View File

@@ -196,7 +196,7 @@ class CodingSqlTest extends PHPUnit\Framework\TestCase
$result=(! strpos($filecontent, '["') && ! strpos($filecontent, '{"') && ! strpos($filecontent, '("')); $result=(! strpos($filecontent, '["') && ! strpos($filecontent, '{"') && ! strpos($filecontent, '("'));
} }
//print __METHOD__." Result for checking we don't have double quote = ".$result."\n"; //print __METHOD__." Result for checking we don't have double quote = ".$result."\n";
$this->assertTrue($result===false, 'Found double quote that is not [" neither {" (used for json content) into '.$file.'. Bad.'); $this->assertTrue($result===false, 'Found double quote that is not [" neither {" (used for json content) neither (" (used for content with string like isModEnabled("")) into '.$file.'. Bad.');
$result=strpos($filecontent, 'int('); $result=strpos($filecontent, 'int(');
//print __METHOD__." Result for checking we don't have 'int(' instead of 'integer' = ".$result."\n"; //print __METHOD__." Result for checking we don't have 'int(' instead of 'integer' = ".$result."\n";