';
if (is_array($lines[$i]->detail_batch) && count($lines[$i]->detail_batch) > 0) {
print '';
$line = new ExpeditionLigne($db);
@@ -2252,6 +2271,16 @@ if ($action == 'create') {
print '
';
print '';
}
+ } elseif (empty($conf->stock->enabled) && empty($conf->productbatch->enabled)) { // both product batch and stock are not activated.
+ print '';
+ print '
';
+ // Qty to ship or shipped
+ print '
';
+ // Warehouse source
+ print '
';
+ // Batch number managment
+ print '
';
+ print '
';
}
print '
';
@@ -2369,10 +2398,11 @@ if ($action == 'create') {
$line = $lines[$i];
$line->fetch_optionals();
+ // TODO Show all in same line by setting $display_type = 'line'
if ($action == 'editline' && $line->id == $line_id) {
- print $lines[$i]->showOptionals($extrafields, 'edit', array('colspan'=>$colspan), $indiceAsked);
+ print $lines[$i]->showOptionals($extrafields, 'edit', array('colspan'=>$colspan), $indiceAsked, '', 0, 'card');
} else {
- print $lines[$i]->showOptionals($extrafields, 'view', array('colspan'=>$colspan), $indiceAsked);
+ print $lines[$i]->showOptionals($extrafields, 'view', array('colspan'=>$colspan), $indiceAsked, '', 0, 'card');
}
}
}
diff --git a/htdocs/fourn/class/fournisseur.facture.class.php b/htdocs/fourn/class/fournisseur.facture.class.php
index abb5b01fb2c..fd393445187 100644
--- a/htdocs/fourn/class/fournisseur.facture.class.php
+++ b/htdocs/fourn/class/fournisseur.facture.class.php
@@ -3387,20 +3387,11 @@ class SupplierInvoiceLine extends CommonObjectLine
$this->multicurrency_total_ttc = 0;
}
+ $fk_product = (int) $this->fk_product;
+ $fk_unit = (int) $this->fk_unit;
+
$this->db->begin();
- if (empty($this->fk_product)) {
- $fk_product = "null";
- } else {
- $fk_product = $this->fk_product;
- }
-
- if (empty($this->fk_unit)) {
- $fk_unit = "null";
- } else {
- $fk_unit = "'".$this->db->escape($this->fk_unit)."'";
- }
-
$sql = "UPDATE ".MAIN_DB_PREFIX."facture_fourn_det SET";
$sql .= " description ='".$this->db->escape($this->description)."'";
$sql .= ", ref ='".$this->db->escape($this->ref_supplier ? $this->ref_supplier : $this->ref)."'";
@@ -3410,7 +3401,7 @@ class SupplierInvoiceLine extends CommonObjectLine
$sql .= ", pu_ttc = ".price2num($this->pu_ttc);
$sql .= ", qty = ".price2num($this->qty);
$sql .= ", remise_percent = ".price2num($this->remise_percent);
- if ($this->fk_remise_except) $sql .= ", fk_remise_except=".((int) $this->fk_remise_except);
+ if ($this->fk_remise_except > 0) $sql .= ", fk_remise_except=".((int) $this->fk_remise_except);
else $sql .= ", fk_remise_except=null";
$sql .= ", vat_src_code = '".$this->db->escape(empty($this->vat_src_code) ? '' : $this->vat_src_code)."'";
$sql .= ", tva_tx = ".price2num($this->tva_tx);
@@ -3423,7 +3414,7 @@ class SupplierInvoiceLine extends CommonObjectLine
$sql .= ", total_localtax1= ".price2num($this->total_localtax1);
$sql .= ", total_localtax2= ".price2num($this->total_localtax2);
$sql .= ", total_ttc = ".price2num($this->total_ttc);
- $sql .= ", fk_product = ".((int) $fk_product);
+ $sql .= ", fk_product = ".($fk_product > 0 ? (int) $fk_product : 'null');
$sql .= ", product_type = ".((int) $this->product_type);
$sql .= ", info_bits = ".((int) $this->info_bits);
$sql .= ", fk_unit = ".($fk_unit > 0 ? (int) $fk_unit : 'null');
diff --git a/htdocs/install/mysql/migration/13.0.0-14.0.0.sql b/htdocs/install/mysql/migration/13.0.0-14.0.0.sql
index 032504dfa61..d50b6991261 100644
--- a/htdocs/install/mysql/migration/13.0.0-14.0.0.sql
+++ b/htdocs/install/mysql/migration/13.0.0-14.0.0.sql
@@ -459,7 +459,7 @@ CREATE TABLE llx_partnership(
fk_soc integer,
fk_member integer,
date_partnership_start date NOT NULL,
- date_partnership_end date NOT NULL,
+ date_partnership_end date NULL,
entity integer DEFAULT 1 NOT NULL, -- multi company id, 0 = all
reason_decline_or_cancel text NULL,
date_creation datetime NOT NULL,
diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang
index 0c660de8e22..a835ec8475d 100644
--- a/htdocs/langs/en_US/bills.lang
+++ b/htdocs/langs/en_US/bills.lang
@@ -570,7 +570,7 @@ ToCreateARecurringInvoiceGene=To generate future invoices regularly and manually
ToCreateARecurringInvoiceGeneAuto=If you need to have such invoices generated automatically, ask your administrator to enable and setup module %s. Note that both methods (manual and automatic) can be used together with no risk of duplication.
DeleteRepeatableInvoice=Delete template invoice
ConfirmDeleteRepeatableInvoice=Are your sure you want to delete the template invoice?
-CreateOneBillByThird=Create one invoice per third party (otherwise, one invoice per order)
+CreateOneBillByThird=Create one invoice per third party (otherwise, one invoice per selected object)
BillCreated=%s invoice(s) generated
BillXCreated=Invoice %s generated
StatusOfGeneratedDocuments=Status of document generation
diff --git a/htdocs/langs/en_US/eventorganization.lang b/htdocs/langs/en_US/eventorganization.lang
index 67a242e640a..d2840be73f2 100644
--- a/htdocs/langs/en_US/eventorganization.lang
+++ b/htdocs/langs/en_US/eventorganization.lang
@@ -100,16 +100,17 @@ EvntOrgCancelled = Cancelled
# Public page
#
SuggestForm = Suggestion page
-RegisterPage = Page for conferences or booth
+SuggestOrVoteForConfOrBooth = Page for suggestion or vote
EvntOrgRegistrationHelpMessage = Here, you can vote for an event, or suggest a new conference or booth for the project
EvntOrgRegistrationConfHelpMessage = Here, you can suggest a new conference for the project
EvntOrgRegistrationBoothHelpMessage = Here, you can suggest a new booth for the project
ListOfSuggestedConferences = List of suggested conferences
ListOfSuggestedBooths = List of suggested booths
+ListOfConferencesOrBooths=List of conferences or booths
SuggestConference = Suggest a new conference
SuggestBooth = Suggest a booth
ViewAndVote = View and vote for suggested events
-PublicAttendeeSubscriptionPage = Public link of registration to a conference
+PublicAttendeeSubscriptionPage = Public link for registration to the event
MissingOrBadSecureKey = The security key is invalid or missing
EvntOrgWelcomeMessage = This form allows you to register as a new participant to the conference : '%s'
EvntOrgDuration = This conference starts on %s and ends on %s.
@@ -122,6 +123,8 @@ ConferenceIsNotConfirmed=Subcription not available, conference is not confirmed
DateMustBeBeforeThan=%s must be before %s
DateMustBeAfterThan=%s must be after %s
+NewSubscription=Registration
+
#
# Vote page
#
diff --git a/htdocs/langs/en_US/exports.lang b/htdocs/langs/en_US/exports.lang
index cb652229825..f2f2d2cf587 100644
--- a/htdocs/langs/en_US/exports.lang
+++ b/htdocs/langs/en_US/exports.lang
@@ -96,8 +96,8 @@ DataComeFromFileFieldNb=Value to insert comes from field number %s in sou
DataComeFromIdFoundFromRef=Value that comes from field number %s of source file will be used to find the id of the parent object to use (so the object %s that has the ref. from source file must exist in the database).
DataComeFromIdFoundFromCodeId=Code that comes from field number %s of source file will be used to find the id of the parent object to use (so the code from source file must exist in the dictionary %s). Note that if you know the id, you can also use it in the source file instead of the code. Import should work in both cases.
DataIsInsertedInto=Data coming from source file will be inserted into the following field:
-DataIDSourceIsInsertedInto=The id of parent object was found using the data in the source file, will be inserted into the following field:
-DataCodeIDSourceIsInsertedInto=The id of parent line found from code, will be inserted into following field:
+DataIDSourceIsInsertedInto=The id of the parent object, that was found using the data in the source file, will be inserted into the following field:
+DataCodeIDSourceIsInsertedInto=The id of the parent line, that was found from code, will be inserted into the following field:
SourceRequired=Data value is mandatory
SourceExample=Example of possible data value
ExampleAnyRefFoundIntoElement=Any ref found for element %s
diff --git a/htdocs/langs/en_US/members.lang b/htdocs/langs/en_US/members.lang
index 2c4409caa88..b193e1f34b6 100644
--- a/htdocs/langs/en_US/members.lang
+++ b/htdocs/langs/en_US/members.lang
@@ -155,7 +155,7 @@ DescADHERENT_CARD_TEXT_RIGHT=Text printed on member cards (align on right)
DescADHERENT_CARD_FOOTER_TEXT=Text printed on bottom of member cards
ShowTypeCard=Show type '%s'
HTPasswordExport=htpassword file generation
-NoThirdPartyAssociatedToMember=No third party associated to this member
+NoThirdPartyAssociatedToMember=No third party associated with this member
MembersAndSubscriptions= Members and Subscriptions
MoreActions=Complementary action on recording
MoreActionsOnSubscription=Complementary action, suggested by default when recording a subscription
diff --git a/htdocs/langs/en_US/orders.lang b/htdocs/langs/en_US/orders.lang
index 5dab5b99bf1..9018db40a5b 100644
--- a/htdocs/langs/en_US/orders.lang
+++ b/htdocs/langs/en_US/orders.lang
@@ -151,6 +151,7 @@ PDFEdisonDescription=A simple order model
PDFProformaDescription=A complete Proforma invoice template
CreateInvoiceForThisCustomer=Bill orders
CreateInvoiceForThisSupplier=Bill orders
+CreateInvoiceForThisReceptions=Bill receptions
NoOrdersToInvoice=No orders billable
CloseProcessedOrdersAutomatically=Classify "Processed" all selected orders.
OrderCreation=Order creation
diff --git a/htdocs/langs/en_US/users.lang b/htdocs/langs/en_US/users.lang
index 841ee0f3daf..888c9f52161 100644
--- a/htdocs/langs/en_US/users.lang
+++ b/htdocs/langs/en_US/users.lang
@@ -62,8 +62,8 @@ ListOfUsersInGroup=List of users in this group
ListOfGroupsForUser=List of groups for this user
LinkToCompanyContact=Link to third party / contact
LinkedToDolibarrMember=Link to member
-LinkedToDolibarrUser=Link to Dolibarr user
-LinkedToDolibarrThirdParty=Link to Dolibarr third party
+LinkedToDolibarrUser=Link to user
+LinkedToDolibarrThirdParty=Link to third party
CreateDolibarrLogin=Create a user
CreateDolibarrThirdParty=Create a third party
LoginAccountDisableInDolibarr=Account disabled in Dolibarr.
diff --git a/htdocs/modulebuilder/index.php b/htdocs/modulebuilder/index.php
index f8ca876eafc..ed090618855 100644
--- a/htdocs/modulebuilder/index.php
+++ b/htdocs/modulebuilder/index.php
@@ -383,7 +383,7 @@ if ($dirins && $action == 'initphpunit' && !empty($module)) {
$modulename = ucfirst($module); // Force first letter in uppercase
$objectname = $tabobj;
- dol_mkdir($dirins.'/'.strtolower($module).'/class');
+ dol_mkdir($dirins.'/'.strtolower($module).'/test/phpunit');
$srcdir = DOL_DOCUMENT_ROOT.'/modulebuilder/template';
$srcfile = $srcdir.'/test/phpunit/MyObjectTest.php';
$destfile = $dirins.'/'.strtolower($module).'/test/phpunit/'.strtolower($objectname).'Test.php';
@@ -2218,7 +2218,8 @@ if ($module == 'initmodule') {
if ($action != 'editfile' || empty($file)) {
print '';
- $htmlhelp = $langs->trans("DictionariesDefDescTooltip", ''.$langs->trans('Setup').' - '.$langs->trans('Dictionaries').'');
+ $htmlhelp = $langs->trans("DictionariesDefDescTooltip", '{s1}');
+ $htmlhelp = str_replace('{s1}', ''.$langs->trans('Setup').' - '.$langs->trans('Dictionaries').'', $htmlhelp);
print $form->textwithpicto($langs->trans("DictionariesDefDesc"), $htmlhelp, 1, 'help', '', 0, 2, 'helpondesc').' ';
print '';
print ' ';
@@ -3002,7 +3003,8 @@ if ($module == 'initmodule') {
if ($action != 'editfile' || empty($file)) {
print '';
- $htmlhelp = $langs->trans("MenusDefDescTooltip", ''.$langs->trans('Setup').' - '.$langs->trans('Menus').'');
+ $htmlhelp = $langs->trans("MenusDefDescTooltip", '{s1}');
+ $htmlhelp = str_replace('{s1}', ''.$langs->trans('Setup').' - '.$langs->trans('Menus').'', $htmlhelp);
print $form->textwithpicto($langs->trans("MenusDefDesc"), $htmlhelp, 1, 'help', '', 0, 2, 'helpondesc').' ';
print '';
print ' ';
@@ -3134,7 +3136,8 @@ if ($module == 'initmodule') {
if ($action != 'editfile' || empty($file)) {
print '';
- $htmlhelp = $langs->trans("PermissionsDefDescTooltip", ''.$langs->trans('DefaultPermissions').'');
+ $htmlhelp = $langs->trans("PermissionsDefDescTooltip", '{s1}');
+ $htmlhelp = str_replace('{s1}', ''.$langs->trans('DefaultRights').'', $htmlhelp);
print $form->textwithpicto($langs->trans("PermissionsDefDesc"), $htmlhelp, 1, 'help', '', 0, 2, 'helpondesc').' ';
print '';
print ' ';
@@ -3601,7 +3604,7 @@ if ($module == 'initmodule') {
$cronjobs = $moduleobj->cronjobs;
if ($action != 'editfile' || empty($file)) {
- print ''.str_replace('{s1}', ''.$langs->transnoentities('CronList').'', $langs->trans("CronJobDefDesc", '{s1}')).' ';
+ print ''.str_replace('{s1}', ''.$langs->transnoentities('CronList').'', $langs->trans("CronJobDefDesc", '{s1}')).' ';
print ' ';
print ' '.$langs->trans("DescriptorFile").' : '.$pathtofile.'';
diff --git a/htdocs/modulebuilder/template/class/api_mymodule.class.php b/htdocs/modulebuilder/template/class/api_mymodule.class.php
index faeb22a095b..cb2fbda68a6 100644
--- a/htdocs/modulebuilder/template/class/api_mymodule.class.php
+++ b/htdocs/modulebuilder/template/class/api_mymodule.class.php
@@ -69,7 +69,7 @@ class MyModuleApi extends DolibarrApi
*/
public function get($id)
{
- if (!DolibarrApiAccess::$user->rights->mymodule->read) {
+ if (!DolibarrApiAccess::$user->rights->mymodule->myobject->read) {
throw new RestException(401);
}
@@ -205,7 +205,7 @@ class MyModuleApi extends DolibarrApi
*/
public function post($request_data = null)
{
- if (!DolibarrApiAccess::$user->rights->mymodule->write) {
+ if (!DolibarrApiAccess::$user->rights->mymodule->myobject->write) {
throw new RestException(401);
}
@@ -238,7 +238,7 @@ class MyModuleApi extends DolibarrApi
*/
public function put($id, $request_data = null)
{
- if (!DolibarrApiAccess::$user->rights->mymodule->write) {
+ if (!DolibarrApiAccess::$user->rights->mymodule->myobject->write) {
throw new RestException(401);
}
@@ -280,7 +280,7 @@ class MyModuleApi extends DolibarrApi
*/
public function delete($id)
{
- if (!DolibarrApiAccess::$user->rights->mymodule->delete) {
+ if (!DolibarrApiAccess::$user->rights->mymodule->myobject->delete) {
throw new RestException(401);
}
$result = $this->myobject->fetch($id);
diff --git a/htdocs/partnership/admin/setup.php b/htdocs/partnership/admin/setup.php
index 25567b137db..100dc7027a3 100644
--- a/htdocs/partnership/admin/setup.php
+++ b/htdocs/partnership/admin/setup.php
@@ -65,8 +65,10 @@ if ($action == 'setting') {
$error += $partnership->delete_menus();
$error += $partnership->insert_menus();
- if (GETPOST("PARTNERSHIP_NBDAYS_AFTER_MEMBER_EXPIRATION_BEFORE_CANCEL", 'int'))
+ if (GETPOSTISSET("PARTNERSHIP_NBDAYS_AFTER_MEMBER_EXPIRATION_BEFORE_CANCEL")) {
dolibarr_set_const($db, "PARTNERSHIP_NBDAYS_AFTER_MEMBER_EXPIRATION_BEFORE_CANCEL", GETPOST("PARTNERSHIP_NBDAYS_AFTER_MEMBER_EXPIRATION_BEFORE_CANCEL", 'int'), 'chaine', 0, '', $conf->entity);
+ }
+
dolibarr_set_const($db, "PARTNERSHIP_BACKLINKS_TO_CHECK", GETPOST("PARTNERSHIP_BACKLINKS_TO_CHECK"), 'chaine', 0, '', $conf->entity);
}
@@ -131,16 +133,16 @@ print '
';
- if ($candelete || ($db->jdate($objp->dp) >= dol_now())) { // Test on date is to be able to delete a corrupted record with a date in future
+ if ($candelete || ($db->jdate($objp->dp) >= dol_now())) { // Test on date is to be able to delete a corrupted record with a date in future
print 'id.'&lineid='.$objp->rowid.'">';
print img_delete();
print '';
diff --git a/htdocs/projet/card.php b/htdocs/projet/card.php
index 4ee23fd632b..1a8cd850cbf 100644
--- a/htdocs/projet/card.php
+++ b/htdocs/projet/card.php
@@ -564,9 +564,9 @@ if ($action == 'create' && $user->rights->projet->creer) {
print ' ';
}
if (!empty($conf->eventorganization->enabled)) {
- print ' ';
+ print ' ';
$htmltext = $langs->trans("EventOrganizationDescriptionLong");
- print $form->textwithpicto($langs->trans("ManageOrganizeEvent"), $htmltext);
+ print '';
}
print '