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

This commit is contained in:
Laurent Destailleur 2026-01-14 15:42:21 +01:00
commit e2cd37a178
12 changed files with 176 additions and 220 deletions

View file

@ -65871,7 +65871,6 @@ INSERT INTO `llx_const` VALUES
(19209,'MAIN_MODULE_USER',0,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2025-07-10 13:22:32'),
(19210,'MAIN_MODULE_VARIANTS',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2025-07-10 13:22:32'),
(19211,'MAIN_MODULE_WEBSITE',1,'1','string',0,'{\"authorid\":0,\"ip\":\"127.0.0.1\",\"lastactivationversion\":\"dolibarr\"}','2025-07-10 13:22:32'),
(19213,'BLOCKEDLOG_HMAC_KEY',0,'dolcrypt:AES-256-CTR:10220f22d6b38559:JQBzV0gvPm0peu75gEg22UuOSKIssTzlkHlJd9r7CsHP6KvuxEtw5uKdzpVsMw==','chaine',0,'The secret key for HMAC used for blockedlog record','2026-01-11 17:46:28'),
(19214,'MAIN_VERSION_LAST_UPGRADE',0,'23.0.0','chaine',0,'Dolibarr version for last upgrade','2026-01-11 17:46:30'),
(19215,'MAIN_LAST_PING_KO_DATE',1,'20260111174642','chaine',0,'','2026-01-11 17:46:42');
/*!40000 ALTER TABLE `llx_const` ENABLE KEYS */;
@ -70406,131 +70405,10 @@ INSERT INTO `llx_extrafields` VALUES
(33,'adherent','extradatamember',1,'2019-10-08 18:47:11','Extra personalized data','varchar','10',100,1,0,'a:1:{s:7:\"options\";a:1:{s:0:\"\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,NULL,12,12,'2019-10-08 20:47:11','1',NULL,0,NULL,NULL,NULL,NULL,NULL),
(34,'adherent_type','extradatamembertype',1,'2019-10-08 18:47:43','Extra personalized data','varchar','32',100,1,0,'a:1:{s:7:\"options\";a:1:{s:0:\"\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,NULL,12,12,'2019-10-08 20:47:43','1',NULL,0,NULL,NULL,NULL,NULL,NULL),
(35,'commande','custom1',1,'2019-12-21 13:31:31','Custom field 1','varchar','10',100,1,0,'a:1:{s:7:\"options\";a:1:{s:0:\"\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,NULL,12,12,'2019-12-21 17:31:31','1',NULL,0,NULL,NULL,NULL,NULL,NULL),
(36,'societe','height',1,'2020-01-05 20:37:18','Height','varchar','128',1,0,0,'',0,0,NULL,'-1',0,0,NULL,NULL,NULL,12,12,'2020-01-06 00:37:18','1',NULL,0,NULL,NULL,NULL,NULL,NULL),
(37,'societe','weight',1,'2020-01-05 20:37:18','Weigth','varchar','128',2,0,0,'',0,0,NULL,'-1',0,0,NULL,NULL,NULL,12,12,'2020-01-06 00:37:18','1',NULL,0,NULL,NULL,NULL,NULL,NULL),
(38,'societe','prof',1,'2020-01-05 20:37:18','Profession','varchar','128',3,0,0,'',0,0,NULL,'-1',0,0,NULL,NULL,NULL,12,12,'2020-01-06 00:37:18','1',NULL,0,NULL,NULL,NULL,NULL,NULL),
(39,'societe','birthdate',1,'2020-01-05 20:37:19','Birth date','date','0',4,0,0,'',0,0,NULL,'-1',0,0,NULL,NULL,NULL,12,12,'2020-01-06 00:37:19','1',NULL,0,NULL,NULL,NULL,NULL,NULL),
(45,'commande','aaa',1,'2023-01-12 11:33:26','aaa','varchar','255',100,1,0,'a:1:{s:7:\"options\";a:1:{s:0:\"\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,NULL,12,12,'2023-01-12 08:33:26','1',NULL,0,NULL,NULL,NULL,NULL,NULL),
(48,'product','availabelforresellers',1,'2023-01-19 12:20:13','AvailableForResellers','boolean','',111,1,0,'',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2023-01-19 09:20:13','$conf->sellyoursaas->enabled',NULL,0,NULL,NULL,NULL,NULL,NULL),
(61,'societe','separatorthirdparty',1,'2023-01-19 12:20:13','SELLYOURSAAS_NAME','separate','',100,1,0,'a:1:{s:7:\"options\";a:1:{i:1;i:1;}}',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2023-01-19 09:20:13','$conf->sellyoursaas->enabled',NULL,0,NULL,NULL,NULL,NULL,NULL),
(79,'societe','checkboxnonprofitorga',1,'2023-01-19 12:20:13','NonProfitOrganization','select','10',199,1,0,'a:1:{s:7:\"options\";a:2:{s:6:\"profit\";s:18:\"ProfitOrganization\";s:9:\"nonprofit\";s:21:\"NonProfitOrganization\";}}',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2023-01-19 09:20:13','$conf->sellyoursaas->enabled',NULL,0,NULL,NULL,NULL,NULL,NULL),
(80,'contrat','separatorcontract',1,'2023-01-19 12:20:13','SELLYOURSAAS_NAME','separate','',100,1,0,'a:1:{s:7:\"options\";a:1:{i:1;i:1;}}',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2023-01-19 09:20:13','$conf->sellyoursaas->enabled',NULL,0,NULL,NULL,NULL,NULL,NULL),
(81,'contrat','plan',1,'2023-01-19 12:20:13','Plan','varchar','64',102,1,0,'',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2023-01-19 09:20:13','$conf->sellyoursaas->enabled',NULL,0,NULL,NULL,'tdoverflowmax150',NULL,NULL),
(82,'contrat','deployment_init_adminpass',1,'2023-01-19 12:20:13','DeploymentInitPassword','varchar','64',103,1,0,'',0,0,NULL,'-2',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2023-01-19 09:20:13','$conf->sellyoursaas->enabled',NULL,0,NULL,NULL,NULL,NULL,NULL),
(84,'contrat','deployment_host',1,'2023-01-19 12:20:13','DeploymentHost','varchar','128',105,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2023-01-19 09:20:13','$conf->sellyoursaas->enabled','DeploymentHostDesc',0,NULL,NULL,NULL,NULL,NULL),
(131,'facture','commission',1,'2023-01-19 12:20:14','PartnerCommissionForThisInvoice','int','3',1020,1,0,'',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2023-01-19 09:20:14','$conf->sellyoursaas->enabled',NULL,0,NULL,NULL,NULL,NULL,NULL),
(132,'facture','reseller',1,'2023-01-19 12:20:14','Reseller','link','3',1030,1,0,'a:1:{s:7:\"options\";a:1:{s:39:\"Societe:societe/class/societe.class.php\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2023-01-19 09:20:14','$conf->sellyoursaas->enabled',NULL,0,NULL,NULL,NULL,NULL,NULL),
(133,'facture','delayautopayment',1,'2023-01-19 12:20:14','DelayAutomaticPayment','date','',1035,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2023-01-19 09:20:14','$conf->sellyoursaas->enabled','DelayAutomaticPaymentDesc',0,NULL,NULL,NULL,NULL,NULL),
(134,'facture_rec','discountcode',1,'2023-01-19 12:20:14','DiscountCode','varchar','255',200,1,0,'',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2023-01-19 09:20:14','$conf->sellyoursaas->enabled','DiscountCodeDesc',0,NULL,NULL,NULL,NULL,NULL),
(135,'facture_rec','commentonqty',1,'2023-01-19 12:20:14','CommentOnQty','text','8192',220,1,0,'',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2023-01-19 09:20:14','$conf->sellyoursaas->enabled','CommentOnQtyDesc',0,NULL,NULL,NULL,NULL,NULL),
(137,'user','ippublicmain',1,'2023-01-19 12:20:14','IPPublicMain','varchar','255',105,1,0,'',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2023-01-19 09:20:14','$conf->sellyoursaas->enabled','IPPublicMainDesc',0,NULL,NULL,NULL,NULL,NULL),
(138,'facture','separatorinvoice',1,'2023-02-04 13:58:54','SELLYOURSAAS_NAME','separate','',1000,0,0,'a:1:{s:7:\"options\";a:1:{s:0:\"\";N;}}',0,0,NULL,'3',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2023-02-04 10:58:54','$conf->sellyoursaas->enabled',NULL,0,NULL,NULL,NULL,NULL,NULL),
(141,'societe','stripeaccount',1,'2023-02-10 23:45:28','StripeAccount','varchar','255',197,1,0,'a:1:{s:7:\"options\";a:1:{s:0:\"\";N;}}',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2023-02-10 20:45:28','$conf->sellyoursaas->enabled','Ceci est un texte',0,NULL,NULL,NULL,NULL,NULL),
(142,'partnership','a_custom_field',1,'2023-08-15 12:10:00','a_custom_field','varchar','255',100,1,0,'a:1:{s:7:\"options\";a:1:{s:0:\"\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,NULL,12,12,'2023-02-21 06:25:48','1',NULL,0,NULL,NULL,NULL,NULL,NULL),
(143,'user','news_viewed',1,'2023-02-28 12:49:59','Nouveautés vues','boolean','2',100,0,0,'',0,0,NULL,'0',0,0,NULL,NULL,NULL,12,12,'2023-02-28 09:49:59','1',NULL,0,NULL,NULL,NULL,NULL,NULL),
(166,'user','rsapublicmain',1,'2023-08-15 13:06:02','PublicRSAKey','text','2000',100,1,0,'a:1:{s:7:\"options\";a:1:{s:0:\"\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2023-08-15 13:06:02','$conf->sellyoursaas->enabled','PublicRSAKeyDesc',0,NULL,NULL,'tdoverflowmax100',NULL,NULL),
(167,'product','separatorproduct',1,'2024-12-01 12:39:26','SELLYOURSAAS_NAME','separate','',100,1,0,'a:1:{s:7:\"options\";a:1:{i:1;i:1;}}',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(168,'product','app_or_option',1,'2024-12-01 12:39:26','AppOrOption','select','',110,1,0,'a:1:{s:7:\"options\";a:3:{s:3:\"app\";s:11:\"Application\";s:6:\"system\";s:6:\"System\";s:6:\"option\";s:6:\"Option\";}}',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','HelpOnAppOrOption',0,NULL,NULL,NULL,NULL,NULL),
(169,'product','option_condition',1,'2024-12-01 12:39:26','OptionCondition','varchar','200',111,1,0,'a:1:{s:7:\"options\";a:3:{s:3:\"app\";s:11:\"Application\";s:6:\"system\";s:6:\"System\";s:6:\"option\";s:6:\"Option\";}}',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','HelpOnOptionCondition',0,NULL,NULL,NULL,NULL,NULL),
(171,'product','package',1,'2024-12-01 12:39:26','Package','link','',111,1,0,'a:1:{s:7:\"options\";a:1:{s:46:\"Packages:sellyoursaas/class/packages.class.php\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','IfSomethingMustBeDeployed',0,NULL,NULL,'tdoverflowmax100',NULL,NULL),
(172,'product','resource_formula',1,'2024-12-01 12:39:26','QuantityCalculationFormula','text','8192',112,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','QtyFormulaExamples',0,NULL,NULL,NULL,NULL,NULL),
(173,'product','resource_label',1,'2024-12-01 12:39:26','ResourceUnitLabel','varchar','32',112,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','ResourceUnitLabelDesc',0,NULL,NULL,NULL,NULL,NULL),
(174,'product','freeperioddays',1,'2024-12-01 12:39:26','DaysForFreePeriod','int','6',113,1,0,'',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(175,'product','directaccess',1,'2024-12-01 12:39:26','AccessToResources','select','',114,1,0,'a:1:{s:7:\"options\";a:5:{i:0;s:2:\"No\";i:1;s:3:\"Yes\";i:2;s:20:\"DuringTestPeriodOnly\";i:3;s:19:\"AfterTestPeriodOnly\";i:4;s:8:\"OnDemand\";}}',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(176,'product','sshaccesstype',1,'2024-12-01 12:39:26','SshAccessType','select','',114,1,0,'a:1:{s:7:\"options\";a:3:{i:0;s:13:\"SystemDefault\";i:1;s:14:\"CommonUserJail\";i:2;s:15:\"PrivateUserJail\";}}',0,0,NULL,'getDolGlobalInt(\"SELLYOURSAAS_SSH_JAILKIT_ENABLED\")',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','HelpOnSshAccessType',0,NULL,NULL,NULL,NULL,NULL),
(177,'product','typesupport',1,'2024-12-01 12:39:26','TypeOfSupport','select','',115,1,0,'a:1:{s:7:\"options\";a:3:{s:5:\"basic\";s:5:\"Basic\";s:7:\"premium\";s:7:\"Premium\";s:4:\"none\";s:4:\"None\";}}',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(178,'product','register_text',1,'2024-12-01 12:39:26','RegisterText','varchar','255',120,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','EnterHereTranslationKeyToUseOnRegisterPage',0,NULL,NULL,'tdoverflowmax150',NULL,NULL),
(179,'product','register_discountcode',1,'2024-12-01 12:39:26','DiscountCodes','varchar','255',121,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\") && getDolGlobalString(\"SELLYOURSAAS_ACCEPT_DISCOUNTCODE\")','EnterHereListOfDiscountCodes',0,NULL,NULL,'tdoverflowmax100',NULL,NULL),
(180,'product','email_template_trialreminder',1,'2024-12-01 12:39:26','EmailTemplateTrialExpiringReminder','int','',123,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','EmailTemplateTrialExpiringReminderHelp',0,NULL,NULL,NULL,NULL,NULL),
(181,'product','email_template_trialsuspended',1,'2024-12-01 12:39:26','EmailTemplateSuspendedTrial','int','',125,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','EmailTemplateSuspendedTrialHelp',0,NULL,NULL,NULL,NULL,NULL),
(182,'product','position',1,'2024-12-01 12:39:26','Position','int','5',150,1,0,'',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(184,'societe','date_registration',1,'2024-12-01 12:39:26','RegistrationDate','datetime','',103,1,0,'',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(185,'societe','domain_registration_page',1,'2024-12-01 12:39:26','DomainOfRegistrationPage','varchar','128',103,1,0,'',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(186,'societe','ip_confirm_email',1,'2024-12-01 12:39:26','IPConfirmEmail','ip','',180,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(187,'societe','source',1,'2024-12-01 12:39:26','Source','varchar','64',104,1,0,'',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,'tdoverflowmax200',NULL,NULL),
(188,'societe','source_utm',1,'2024-12-01 12:39:26','SourceUtm','varchar','64',104,1,0,'',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,'tdoverflowmax150',NULL,NULL),
(189,'societe','firstname',1,'2024-12-01 12:39:26','FirstName','varchar','64',105,1,0,'',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,'tdoverflowmax120',NULL,NULL),
(190,'societe','lastname',1,'2024-12-01 12:39:26','LastName','varchar','64',106,1,0,'',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,'tdoverflowmax120',NULL,NULL),
(191,'societe','password',1,'2024-12-01 12:39:26','DashboardPassword','password','128',150,1,0,'a:1:{s:7:\"options\";a:1:{s:4:\"auto\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(192,'societe','oldpassword',1,'2024-12-01 12:39:26','OldDashboardPassword','password','128',151,0,0,'a:1:{s:7:\"options\";a:1:{s:4:\"auto\";N;}}',0,0,NULL,'-2',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(193,'societe','pass_temp',1,'2024-12-01 12:39:26','HashForPasswordReset','varchar','128',152,1,0,'',0,0,NULL,'0',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(194,'societe','email_temp',1,'2024-12-01 12:39:26','NewEmailToConfirm','varchar','128',153,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(195,'societe','optinmessages',1,'2024-12-01 12:39:26','OptinForCommercialMessages','boolean','',160,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(196,'societe','emailccinvoice',1,'2024-12-01 12:39:26','EmailCCInvoices','varchar','255',180,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(197,'societe','manualcollection',1,'2024-12-01 12:39:26','ManualCollection','boolean','',194,1,0,'',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','If checked, the batch SellYourSaasValidateDraftInvoices will never validate invoices of this customer',0,NULL,NULL,NULL,NULL,NULL),
(198,'societe','date_apply_for_reseller',1,'2024-12-01 12:39:26','DateApplyReseller','date','',195,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(199,'societe','commission',1,'2024-12-01 12:39:26','PartnerCommission','int','3',196,1,0,'a:1:{s:7:\"options\";a:1:{s:4:\"auto\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(201,'societe','maxnbofinstances',1,'2024-12-01 12:39:26','MaxNbOfInstances','int','3',198,1,0,'',0,0,NULL,'-1',0,0,NULL,'4','sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(202,'societe','spammer',1,'2024-12-01 12:39:26','EvilUser','varchar','8',300,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(209,'contrat','deployment_date_start',1,'2024-12-01 12:39:26','DeploymentDateStart','datetime','',106,1,0,'',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(210,'contrat','deployment_date_end',1,'2024-12-01 12:39:26','DeploymentDateEnd','datetime','',107,1,0,'',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(211,'contrat','deployment_ip',1,'2024-12-01 12:39:26','DeploymentIP','ip','',108,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(212,'contrat','deployment_vpn_proba',1,'2024-12-01 12:39:26','DeploymentIPVPNProba','double','8,4',109,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','DeploymentIPVPNProbaDesc:ipvpnprob',0,NULL,NULL,NULL,NULL,NULL),
(213,'contrat','deployment_ipquality',1,'2024-12-01 12:39:26','DeploymentIPQuality','varchar','255',110,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','DeploymentIPQualityDesc:ipquality',0,NULL,NULL,NULL,NULL,NULL),
(214,'contrat','deployment_emailquality',1,'2024-12-01 12:39:26','DeploymentEmailQuality','varchar','255',110,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','DeploymentEmailQualityDesc:ipquality',0,NULL,NULL,NULL,NULL,NULL),
(215,'contrat','deployment_ua',1,'2024-12-01 12:39:26','DeploymentUserAgent','varchar','255',111,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(216,'contrat','date_softalert_endfreeperiod',1,'2024-12-01 12:39:26','DateSoftAlertEndTrial','datetime','',112,1,0,'',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(217,'contrat','date_hardalert_endfreeperiod',1,'2024-12-01 12:39:26','DateHardAlertEndTrial','datetime','',113,1,0,'',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(219,'contrat','undeployment_date',1,'2024-12-01 12:39:26','UndeploymentDate','datetime','',118,1,0,'',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(220,'contrat','undeployment_ip',1,'2024-12-01 12:39:26','UndeploymentIP','varchar','128',119,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(221,'contrat','custom_url',1,'2024-12-01 12:39:26','CustomURL','varchar','128',122,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','CustomUrlDesc:tooltipcustomurl',0,NULL,NULL,NULL,NULL,NULL),
(222,'contrat','custom_virtualhostline',1,'2024-12-01 12:39:26','CustomVirtualHostLine','varchar','255',123,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','EnterAVirtualHostLine:virthostline',0,NULL,NULL,NULL,NULL,NULL),
(223,'contrat','custom_virtualhostdir',1,'2024-12-01 12:39:26','CustomVirtualHostDir','varchar','255',124,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','EnterAVirtualHostDirLine:virthostdirline',0,NULL,NULL,NULL,NULL,NULL),
(224,'contrat','hostname_os',1,'2024-12-01 12:39:26','Hostname OS','varchar','128',125,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(225,'contrat','username_os',1,'2024-12-01 12:39:26','Username OS','varchar','32',126,1,0,'',1,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(227,'contrat','sshaccesstype',1,'2024-12-01 12:39:26','SshAccessType','select','',128,1,0,'a:1:{s:7:\"options\";a:3:{i:0;s:13:\"SystemDefault\";i:1;s:14:\"CommonUserJail\";i:2;s:15:\"PrivateUserJail\";}}',0,0,NULL,'getDolGlobalInt(\"SELLYOURSAAS_SSH_JAILKIT_ENABLED\")',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','HelpOnSshAccessType',0,NULL,NULL,NULL,NULL,NULL),
(228,'contrat','directaccess',1,'2024-12-01 12:39:26','AccessToResources','select','',129,1,0,'a:1:{s:7:\"options\";a:2:{i:0;s:21:\"DefaultFromAppService\";i:1;s:3:\"Yes\";}}',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(229,'contrat','hostname_db',1,'2024-12-01 12:39:26','Hostname DB','varchar','128',130,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(230,'contrat','database_db',1,'2024-12-01 12:39:26','Database DB','varchar','32',131,1,0,'',1,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(231,'contrat','port_db',1,'2024-12-01 12:39:26','Port DB','varchar','8',132,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(232,'contrat','username_db',1,'2024-12-01 12:39:26','Username DB','varchar','32',133,1,0,'',1,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(234,'contrat','username_ro_db',1,'2024-12-01 12:39:26','Read-only Username DB','varchar','32',135,1,0,'',1,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','ToCreateDBUserManualy:username_ro_db',0,NULL,NULL,NULL,NULL,NULL),
(236,'contrat','prefix_db',1,'2024-12-01 12:39:26','Special table prefix DB','varchar','64',140,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(237,'contrat','timezone',1,'2024-12-01 12:39:26','TimeZone','varchar','64',141,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','SellYourSaasTimeZoneDesc',0,NULL,NULL,'tdoverflowmax150',NULL,NULL),
(238,'contrat','fileauthorizekey',1,'2024-12-01 12:39:26','DateFileauthorizekey','datetime','',150,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(239,'contrat','filelock',1,'2024-12-01 12:39:26','DateFilelock','datetime','',151,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(240,'contrat','fileinstallmoduleslock',1,'2024-12-01 12:39:26','DateFileInstallmoduleslock','datetime','',152,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(241,'contrat','fileupgradeunlock',1,'2024-12-01 12:39:26','DateFileUpgradeUnlock','datetime','',153,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(242,'contrat','latestresupdate_date',1,'2024-12-01 12:39:26','LatestResUpdateDate','datetime','',155,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(243,'contrat','instanceversion',1,'2024-12-01 12:39:26','InstanceVersion','varchar','128',156,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(244,'contrat','latestbackup_date',1,'2024-12-01 12:39:26','LatestBackupDate','datetime','',159,1,0,'',0,0,NULL,'-5',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(245,'contrat','latestbackup_date_ok',1,'2024-12-01 12:39:26','LatestBackupDateOK','datetime','',160,1,0,'',0,0,NULL,'-5',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(246,'contrat','latestbackup_status',1,'2024-12-01 12:39:26','LatestBackupStatus','varchar','2',161,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(247,'contrat','latestbackup_message',1,'2024-12-01 12:39:26','LatestBackupMessage','text','8192',162,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(248,'contrat','latestbackupremote_date',1,'2024-12-01 12:39:26','LatestBackupRemoteDate','datetime','',163,1,0,'',0,0,NULL,'-5',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(249,'contrat','latestbackupremote_date_ok',1,'2024-12-01 12:39:26','LatestBackupRemoteDateOK','datetime','',164,1,0,'',0,0,NULL,'-5',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(250,'contrat','latestbackupremote_status',1,'2024-12-01 12:39:26','LatestBackupRemoteStatus','varchar','2',165,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(251,'contrat','backup_frequency',1,'2024-12-01 12:39:26','BackupFrequency','int','3',170,1,0,'',0,0,NULL,'-1',0,0,NULL,'1','sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(252,'contrat','maxperday',1,'2024-12-01 12:39:26','MaxEmailPerDay','int','6',171,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','MaxEmailPerDayDesc',0,NULL,NULL,NULL,NULL,NULL),
(253,'contrat','cookieregister_counter',1,'2024-12-01 12:39:26','RegistrationCounter','int','10',180,1,0,'',0,0,NULL,'-1',1,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(254,'contrat','cookieregister_previous_instance',1,'2024-12-01 12:39:26','RegistrationPreviousInstance','varchar','128',181,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(255,'contrat','discountcode',1,'2024-12-01 12:39:26','DiscountCode','varchar','255',200,1,0,'',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','DiscountCodeDesc',0,NULL,NULL,NULL,NULL,NULL),
(256,'contrat','suspendmaintenance_message',1,'2024-12-01 12:39:26','Maintenance message','varchar','255',210,1,0,'',0,0,NULL,'-2',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,'tdoverflowmax150',NULL,NULL),
(257,'contrat','commentonqty',1,'2024-12-01 12:39:26','CommentOnQty','text','8192',220,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','CommentOnQtyDesc',0,NULL,NULL,'tdoverflowmax150',NULL,NULL),
(258,'contrat','spammer',1,'2024-12-01 12:39:26','EvilUser','varchar','8',300,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(259,'contrat','reasonundeploy',1,'2024-12-01 12:39:26','ReasonUninstall','varchar','255',300,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(260,'contrat','commentundeploy',1,'2024-12-01 12:39:26','CommentOfUninstall','text','8192',300,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(265,'facture','invoicepaymentdisputed',1,'2024-12-01 12:39:26','InvoicePaymentDisputed','boolean','',1040,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2024-12-01 13:39:26','isModEnabled(\"sellyoursaas\")','InvoicePaymentDisputedDesc',0,NULL,NULL,NULL,NULL,NULL),
(1407,'alumni_survey','aaa',1,'2024-12-06 12:51:24','aaa','varchar','255',100,1,0,'a:1:{s:7:\"options\";a:1:{s:0:\"\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,NULL,12,12,'2024-12-06 13:51:24','1',NULL,1,NULL,NULL,NULL,NULL,NULL),
(1408,'product','ecotaxdeee',1,'2024-12-12 13:45:28','EcotaxAmount','double','24,8',41,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'ecotaxdeee@ecotaxdeee',12,12,'2024-12-12 13:45:28','!getDolGlobalString(\"ECOTAX_CALCULATION_MODE\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(1409,'product','ecotaxdeeecode',1,'2024-12-12 13:45:28','CodeEcotax','varchar','16',42,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'ecotaxdeee@ecotaxdeee',12,12,'2024-12-12 13:45:28','getDolGlobalString(\"ECOTAX_CALCULATION_MODE\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(1414,'product','marketplace_separator',1,'2024-12-30 17:05:38','Marketplace','separate','0',1,1,0,'a:1:{s:7:\"options\";a:1:{i:1;i:1;}}',0,0,NULL,'1',0,0,NULL,NULL,'marketplace@marketplace',12,12,'2024-12-30 18:05:38','isModEnabled(\"marketplace\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(1415,'product','marketplace_module_version',1,'2024-12-30 17:05:38','ModuleVersion','varchar','12',10,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'marketplace@marketplace',12,12,'2024-12-30 18:05:38','isModEnabled(\"marketplace\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(1416,'product','marketplace_min_version',1,'2024-12-30 17:05:38','DolibarrMin','varchar','12',20,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'marketplace@marketplace',12,12,'2024-12-30 18:05:38','isModEnabled(\"marketplace\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(1417,'product','marketplace_max_version',1,'2024-12-30 17:05:38','DolibarrMax','varchar','12',30,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'marketplace@marketplace',12,12,'2024-12-30 18:05:38','isModEnabled(\"marketplace\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(1418,'product','marketplace_allow_source_in_core',1,'2024-12-30 17:05:39','WantToIncludeSourceInCore','boolean','3',40,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'marketplace@marketplace',12,12,'2024-12-30 18:05:39','isModEnabled(\"marketplace\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(1419,'product','marketplace_contact_support',1,'2024-12-30 17:05:39','HowtoContactSupport','varchar','255',50,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'marketplace@marketplace',12,12,'2024-12-30 18:05:39','isModEnabled(\"marketplace\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(1420,'product','marketplace_reason_disabled',1,'2024-12-30 17:05:39','LastReasonDisabled','varchar','255',60,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'marketplace@marketplace',12,12,'2024-12-30 18:05:39','isModEnabled(\"marketplace\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(1421,'product','marketplace_old_url',1,'2024-12-30 17:05:39','OldSystemUrl','varchar','255',70,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'marketplace@marketplace',12,12,'2024-12-30 18:05:39','isModEnabled(\"marketplace\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(1422,'product','marketplace_module_keywords',1,'2024-12-30 17:05:39','ModuleKeywords','varchar','2555',80,1,0,'',0,0,NULL,'-1',0,0,NULL,NULL,'marketplace@marketplace',12,12,'2024-12-30 18:05:39','isModEnabled(\"marketplace\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(1631,'alumni_survey','a_paye',1,'2025-01-01 18:25:32','A payé','varchar','255',100,1,0,'a:1:{s:7:\"options\";a:1:{s:0:\"\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,NULL,12,12,'2025-01-01 19:25:32','1',NULL,1,NULL,NULL,NULL,NULL,NULL),
(1635,'contrat','password_os',1,'2025-01-03 13:54:58','Password OS','password','128',127,1,0,'a:1:{s:7:\"options\";a:1:{s:8:\"dolcrypt\";s:7:\"/custom\";}}',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2025-01-03 14:54:58','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(1636,'contrat','password_db',1,'2025-01-03 13:55:56','Password DB','password','128',134,1,0,'a:1:{s:7:\"options\";a:1:{s:8:\"dolcrypt\";s:7:\"/custom\";}}',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2025-01-03 14:55:56','isModEnabled(\"sellyoursaas\")','ToUpdateDBPassword:password_db',0,NULL,NULL,NULL,NULL,NULL),
(1637,'contrat','password_ro_db',1,'2025-01-03 13:56:12','Read-only Password DB','password','128',136,1,0,'a:1:{s:7:\"options\";a:1:{s:8:\"dolcrypt\";s:7:\"/custom\";}}',0,0,NULL,'-1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2025-01-03 14:56:12','isModEnabled(\"sellyoursaas\")','ToUpdateDBPassword:password_ro_db',0,NULL,NULL,NULL,NULL,NULL),
(2068,'societe','dolicloud',1,'2025-01-03 14:53:59','SaasCustomer','select','3',102,1,0,'a:1:{s:7:\"options\";a:2:{s:2:\"no\";s:2:\"No\";s:5:\"yesv2\";s:3:\"Yes\";}}',0,1,NULL,'1',0,0,NULL,'no','sellyoursaas@sellyoursaas',12,12,'2025-01-03 15:53:59','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(2277,'entrepot','aaaa',1,'2025-02-19 13:05:18','aaaa','int','10',100,1,0,'a:1:{s:7:\"options\";a:1:{s:0:\"\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,NULL,12,12,'2025-02-19 13:05:18','1',NULL,1,NULL,NULL,NULL,NULL,NULL),
(2308,'contrat','date_endfreeperiod',1,'2025-03-25 12:45:28','DateEndTrial','datetime','',114,1,0,'a:1:{s:7:\"options\";a:1:{s:0:\"\";s:7:\"/custom\";}}',0,0,'$user->hasRight(\'sellyoursaas\', \'salesrepresentative\', \'write\')','1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2025-03-25 12:45:28','isModEnabled(\"sellyoursaas\")',NULL,0,NULL,NULL,NULL,NULL,NULL),
(2309,'contrat','deployment_status',1,'2025-03-25 21:52:13','DeploymentStatus','select','',104,1,0,'a:1:{s:7:\"options\";a:3:{s:10:\"processing\";s:10:\"Processing\";s:4:\"done\";s:4:\"Done\";s:10:\"undeployed\";s:10:\"Undeployed\";}}',0,0,NULL,'1',0,0,NULL,NULL,'sellyoursaas@sellyoursaas',12,12,'2025-03-25 21:52:13','$conf->sellyoursaas->enabled',NULL,0,NULL,NULL,'tdoverflowmax100',NULL,NULL),
(2310,'socpeople','ccc',1,'2025-03-25 22:36:52','ccc','varchar','255',100,1,0,'a:1:{s:7:\"options\";a:1:{s:0:\"\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,NULL,12,12,'2025-03-25 22:36:52','1',NULL,1,NULL,NULL,NULL,NULL,NULL),
(2311,'socpeople','ddd',1,'2025-03-25 22:36:58','ddd','datetime','',100,1,0,'a:1:{s:7:\"options\";a:1:{s:0:\"\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,NULL,12,12,'2025-03-25 22:36:58','1',NULL,1,NULL,NULL,NULL,NULL,NULL),
(2312,'user','eee',1,'2025-03-31 10:55:40','eee','stars','5',100,1,0,'a:1:{s:7:\"options\";a:1:{s:0:\"\";N;}}',0,0,NULL,'1',0,0,NULL,NULL,NULL,12,12,'2025-03-31 07:55:40','1',NULL,1,NULL,NULL,NULL,NULL,NULL),
@ -74396,8 +74274,6 @@ CREATE TABLE `llx_oauth_token` (
LOCK TABLES `llx_oauth_token` WRITE;
/*!40000 ALTER TABLE `llx_oauth_token` DISABLE KEYS */;
INSERT INTO `llx_oauth_token` VALUES
(30,'dolibarr_rest_api',NULL,NULL,12,NULL,0,'dolcrypt:AES-256-CTR:06af30a66d41f991:q217RYkhLQ==',NULL,NULL,NULL,'2026-01-11 18:46:28','2026-01-11 17:46:28',NULL,NULL,0,0,0);
/*!40000 ALTER TABLE `llx_oauth_token` ENABLE KEYS */;
UNLOCK TABLES;

View file

@ -235,8 +235,8 @@ if ($action == 'export' && $user->hasRight('accounting', 'mouvements', 'lire'))
if ($exportType === 'csv') {
$sep = getDolGlobalString('ACCOUNTING_EXPORT_SEPARATORCSV');
$filename = 'balance';
$type_export = 'balance';
$filename = 'balance'; // Used by the tpl
$type_export = 'balance'; // Used by the tpl
include DOL_DOCUMENT_ROOT.'/accountancy/tpl/export_journal.tpl.php';
foreach ($object->lines as $line) {

View file

@ -30,6 +30,13 @@
// Load Dolibarr environment
require '../../main.inc.php';
/**
* @var Conf $conf
* @var DoliDB $db
* @var HookManager $hookmanager
* @var Translate $langs
* @var User $user
*/
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountancyexport.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
require_once DOL_DOCUMENT_ROOT.'/accountancy/class/lettering.class.php';
@ -41,14 +48,6 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php';
/**
* @var Conf $conf
* @var DoliDB $db
* @var HookManager $hookmanager
* @var Translate $langs
* @var User $user
*/
// Load translation files required by the page
$langs->loadLangs(array("accountancy", "compta"));
@ -851,15 +850,26 @@ if ($action == 'export_file') {
|| getDolGlobalString('ACCOUNTING_EXPORT_MODELCSV') == AccountancyExport::$EXPORT_TYPE_FEC
|| getDolGlobalString('ACCOUNTING_EXPORT_MODELCSV') == AccountancyExport::$EXPORT_TYPE_FEC2
) {
$except = array();
if (getDolGlobalInt('ACCOUNTING_EXPORT_REMOVE_INVOICE_SOURCE_FILE')) {
$except[] = $langs->trans('Invoice');
}
if (getDolGlobalInt('ACCOUNTING_EXPORT_REMOVE_EXPENSEREPORT_SOURCE_FILE')) {
$except[] = $langs->trans('ExpenseReport');
}
if (getDolGlobalInt('ACCOUNTING_EXPORT_REMOVE_SUPPLIERINVOICE_SOURCE_FILE')) {
$except[] = $langs->trans('SupplierInvoice');
}
$form_question['notifiedexportfull'] = array(
'name' => 'notifiedexportfull',
'type' => 'checkbox',
'label' => $langs->trans('NotifiedExportFull'),
'label' => $langs->trans('NotifiedExportFull').(empty($except) ? '' : ' <spanc class="opacitymedium">(Except '.join(', ', $except).')</span>'),
'value' => 'false',
);
}
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?'.$param, $langs->trans("ExportFilteredList").'...', $langs->trans('ConfirmExportFile'), 'export_fileconfirm', $form_question, '', 1, 390, 700);
$formconfirm = $form->formconfirm($_SERVER["PHP_SELF"].'?'.$param, $langs->trans("ExportFilteredList").'...', '', 'export_fileconfirm', $form_question, '', 1, 390, 700);
}
// Print form confirm

View file

@ -382,12 +382,12 @@ class AccountancyExport
*/
public function export(&$TData, $formatexportset, $withAttachment = 0, $downloadMode = 1, $outputMode = 1, $noouput = 1)
{
global $db, $conf, $langs; // The tpl file use $db
global $search_date_end; // Used into /accountancy/tpl/export_journal.tpl.php
global $db, $conf, $langs; // Used into /accountancy/tpl/export_journal.tpl.php
global $search_date_end, $hookmanager; // Used into /accountancy/tpl/export_journal.tpl.php
// Define name of file to save
$filename = 'general_ledger-'.$this->getFormatCode($formatexportset);
$type_export = 'general_ledger';
$filename = 'general_ledger-'.$this->getFormatCode($formatexportset); // Used into /accountancy/tpl/export_journal.tpl.php
$type_export = 'general_ledger'; // Used into /accountancy/tpl/export_journal.tpl.php
$completefilename = '';
$exportFile = null;
@ -422,7 +422,8 @@ class AccountancyExport
top_httphead($mimetype, 1);
}
include DOL_DOCUMENT_ROOT.'/accountancy/tpl/export_journal.tpl.php';
// Set var $completefilename and add HTTP header.
include DOL_DOCUMENT_ROOT.'/accountancy/tpl/export_journal.tpl.php'; // TODO Fix this: A tpl is for rendering data on output. For including common code, we must use .inc.php
if ($outputMode == 1 || $outputMode == 2) {
if ($outputMode == 1) {
@ -902,8 +903,13 @@ class AccountancyExport
$end_line = "\r\n";
$conf->cache['archiveFileList_notfound'] = array();
// We should use dol_now function not time however this is wrong date to transfer in accounting
$i = 0;
foreach ($objectLines as $line) {
$i++;
// Clean some data
$line->doc_ref = dol_string_unaccent($line->doc_ref);
@ -1034,12 +1040,14 @@ class AccountancyExport
$tab['num_piece3'] = str_pad(substr(self::trunc($line->doc_ref, 20), -10), 10);
$tab['reserved'] = str_repeat(' ', 10); // position 159
$tab['currency_amount'] = str_repeat(' ', 13); // position 169
// get document file
$attachmentFileName = '';
if ($withAttachment == 1) {
$attachmentFileKey = trim((string) $line->piece_num);
if (!isset($archiveFileList[$attachmentFileKey])) {
// We complete the $archiveFileList to add the file to the existing list (first entry was filled when function was called, we add here the next one)
$objectDirPath = '';
$objectFileName = dol_sanitizeFileName($line->doc_ref);
if ($line->doc_type == 'customer_invoice') {
@ -1053,33 +1061,45 @@ class AccountancyExport
$objectDirPath = !empty($conf->fournisseur->facture->multidir_output[$conf->entity]) ? $conf->fournisseur->facture->multidir_output[$conf->entity] : $conf->fournisseur->facture->dir_output;
$objectDirPath .= '/'.rtrim(get_exdir($invoice->id, 2, 0, 0, $invoice, 'invoice_supplier'), '/');
}
$arrayofinclusion = array();
// If it is a supplier invoice, we want to use last uploaded file
$arrayofinclusion[] = '^'.preg_quote($objectFileName, '/').(($line->doc_type == 'supplier_invoice') ? '.+' : '').'\.pdf$';
$fileFoundList = dol_dir_list($objectDirPath.'/'.$objectFileName, 'files', 0, implode('|', $arrayofinclusion), '(\.meta|_preview.*\.png)$', 'date', SORT_DESC, 0, 1);
if (!empty($fileFoundList)) {
$attachmentFileNameTrunc = str_pad(self::trunc((string) $line->piece_num, 8), 8, '0', STR_PAD_LEFT);
foreach ($fileFoundList as $fileFound) {
if (strstr($fileFound['name'], $objectFileName)) {
// skip native invoice pdfs (canelle)
// We want to retrieve an attachment representative of the supplier invoice, not a fake document generated by Dolibarr.
if ($line->doc_type == 'supplier_invoice') {
if ($fileFound['name'] === $objectFileName.'.pdf') {
if ($objectDirPath && empty($conf->cache['archiveFileList_notfound'][$attachmentFileKey])) {
$arrayofinclusion = array();
// If it is a supplier invoice, we want to use last uploaded file
$arrayofinclusion[] = '^'.preg_quote($objectFileName, '/').(($line->doc_type == 'supplier_invoice') ? '.+' : '').'\.pdf$';
$fileFoundPath = '';
$fileFoundList = dol_dir_list($objectDirPath.'/'.$objectFileName, 'files', 0, implode('|', $arrayofinclusion), '(\.meta|_preview.*\.png)$', 'date', SORT_DESC, 0, 1);
if (!empty($fileFoundList)) {
$attachmentFileNameTrunc = str_pad(self::trunc((string) $line->piece_num, 8), 8, '0', STR_PAD_LEFT);
foreach ($fileFoundList as $fileFound) {
if (strstr($fileFound['name'], $objectFileName)) {
// skip native invoice pdfs (canelle)
// We want to retrieve an attachment representative of the supplier invoice, not a fake document generated by Dolibarr.
if ($line->doc_type == 'supplier_invoice') {
if ($fileFound['name'] === $objectFileName.'.pdf') {
continue;
}
} elseif ($fileFound['name'] !== $objectFileName.'.pdf') {
continue;
}
} elseif ($fileFound['name'] !== $objectFileName.'.pdf') {
continue;
}
$fileFoundPath = $objectDirPath.'/'.$objectFileName.'/'.$fileFound['name'];
if (file_exists($fileFoundPath)) {
$archiveFileList[$attachmentFileKey] = array(
'path' => $fileFoundPath,
'name' => $attachmentFileNameTrunc.'.pdf',
);
break;
$fileFoundPath = $objectDirPath.'/'.$objectFileName.'/'.$fileFound['name'];
if (file_exists($fileFoundPath)) {
$archiveFileList[$attachmentFileKey] = array(
'path' => $fileFoundPath,
'name' => $attachmentFileNameTrunc.'.pdf',
);
break;
}
}
}
}
if (empty($fileFoundPath)) {
// Use also a cache if no file were found
$conf->cache['archiveFileList_notfound'][$attachmentFileKey] = 1;
}
}
}
@ -1087,6 +1107,7 @@ class AccountancyExport
$attachmentFileName = $archiveFileList[$attachmentFileKey]['name'];
}
}
if (dol_strlen((string) $attachmentFileName) == 12) {
$tab['attachment'] = $attachmentFileName; // position 182
} else {
@ -1462,11 +1483,16 @@ class AccountancyExport
print $output;
}
$conf->cache['archiveFileList_notfound'] = array();
$i = 0;
foreach ($objectLines as $line) {
if ($line->debit == 0 && $line->credit == 0) {
//var_dump($line->id);
//unset($array[$line]);
} else {
$i++;
$date_creation = dol_print_date($line->date_creation, '%Y%m%d');
$date_document = dol_print_date($line->doc_date, '%Y%m%d');
$date_lettering = dol_print_date($line->date_lettering, '%Y%m%d');
@ -1475,6 +1501,8 @@ class AccountancyExport
$refInvoice = '';
$invoice = null;
// TODO The fetch of invoice is just to get the ->id, ->ref (and ->ref_supplier for supplier invoice) so
// may be we can get them into the $objectLines and reuse a generic static objectinstead ?
if ($line->doc_type == 'customer_invoice') {
// Customer invoice
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
@ -1567,6 +1595,7 @@ class AccountancyExport
$attachmentFileKey = trim((string) $line->piece_num);
if (!isset($archiveFileList[$attachmentFileKey])) {
// We complete the $archiveFileList to add the file to the existing list (first entry was filled when function was called, we add here the next one)
$objectDirPath = '';
$objectFileName = dol_sanitizeFileName($line->doc_ref);
if ($line->doc_type == 'customer_invoice') {
@ -1584,33 +1613,45 @@ class AccountancyExport
$objectDirPath .= '/' . rtrim(get_exdir($invoice->id, 2, 0, 0, $invoice, 'invoice_supplier'), '/');
}
}
$arrayofinclusion = array();
// If it is a supplier invoice, we want to use last uploaded file
$arrayofinclusion[] = '^'.preg_quote($objectFileName, '/').(($line->doc_type == 'supplier_invoice') ? '.+' : '').'\.pdf$';
$fileFoundList = dol_dir_list($objectDirPath.'/'.$objectFileName, 'files', 0, implode('|', $arrayofinclusion), '(\.meta|_preview.*\.png)$', 'date', SORT_DESC, 0, 1);
if (!empty($fileFoundList)) {
$attachmentFileNameTrunc = $line->doc_ref;
foreach ($fileFoundList as $fileFound) {
if (strstr($fileFound['name'], $objectFileName)) {
// skip native invoice pdfs (canelle)
// We want to retrieve an attachment representative of the supplier invoice, not a fake document generated by Dolibarr.
if ($line->doc_type == 'supplier_invoice') {
if ($fileFound['name'] === $objectFileName.'.pdf') {
if ($objectDirPath && empty($conf->cache['archiveFileList_notfound'][$attachmentFileKey])) {
$arrayofinclusion = array();
// If it is a supplier invoice, we want to use last uploaded file
$arrayofinclusion[] = '^'.preg_quote($objectFileName, '/').(($line->doc_type == 'supplier_invoice') ? '.+' : '').'\.pdf$';
$fileFoundPath = ''; // The path of last file found
$fileFoundList = dol_dir_list($objectDirPath.'/'.$objectFileName, 'files', 0, implode('|', $arrayofinclusion), '(\.meta|_preview.*\.png)$', 'date', SORT_DESC, 0, 1);
if (!empty($fileFoundList)) {
$attachmentFileNameTrunc = $line->doc_ref;
foreach ($fileFoundList as $fileFound) {
if (strstr($fileFound['name'], $objectFileName)) {
// skip native invoice pdfs (canelle)
// We want to retrieve an attachment representative of the supplier invoice, not a fake document generated by Dolibarr.
if ($line->doc_type == 'supplier_invoice') {
if ($fileFound['name'] === $objectFileName.'.pdf') {
continue;
}
} elseif ($fileFound['name'] !== $objectFileName.'.pdf') {
continue;
}
} elseif ($fileFound['name'] !== $objectFileName.'.pdf') {
continue;
}
$fileFoundPath = $objectDirPath.'/'.$objectFileName.'/'.$fileFound['name'];
if (file_exists($fileFoundPath)) {
$archiveFileList[$attachmentFileKey] = array(
'path' => $fileFoundPath,
'name' => $attachmentFileNameTrunc.'.pdf',
);
break;
$fileFoundPath = $objectDirPath.'/'.$objectFileName.'/'.$fileFound['name'];
if (file_exists($fileFoundPath)) {
$archiveFileList[$attachmentFileKey] = array(
'path' => $fileFoundPath,
'name' => $attachmentFileNameTrunc.'.pdf',
);
break;
}
}
}
}
if (empty($fileFoundPath)) {
// Use also a cache if no file were found
$conf->cache['archiveFileList_notfound'][$attachmentFileKey] = 1;
}
}
}
@ -1683,10 +1724,15 @@ class AccountancyExport
print $output;
}
$conf->cache['archiveFileList_notfound'] = array();
$i = 0;
foreach ($objectLines as $line) {
if ($line->debit == 0 && $line->credit == 0) {
//unset($array[$line]);
} else {
$i++;
$date_creation = dol_print_date($line->date_creation, '%Y%m%d');
$date_document = dol_print_date($line->doc_date, '%Y%m%d');
$date_lettering = dol_print_date($line->date_lettering, '%Y%m%d');
@ -1695,6 +1741,8 @@ class AccountancyExport
$refInvoice = '';
$invoice = null;
// TODO The fetch of invoice is just to get the ->id, ->ref (and ->ref_supplier for supplier invoice) so
// may be we can get them into the $objectLines and reuse a generic static objectinstead ?
if ($line->doc_type == 'customer_invoice') {
// Customer invoice
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
@ -1787,6 +1835,7 @@ class AccountancyExport
$attachmentFileKey = trim((string) $line->piece_num);
if (!isset($archiveFileList[$attachmentFileKey])) {
// We complete the $archiveFileList to add the file to the existing list (first entry was filled when function was called, we add here the next one)
$objectDirPath = '';
$objectFileName = dol_sanitizeFileName($line->doc_ref);
if ($line->doc_type == 'customer_invoice') {
@ -1804,33 +1853,45 @@ class AccountancyExport
$objectDirPath .= '/' . rtrim(get_exdir($invoice->id, 2, 0, 0, $invoice, 'invoice_supplier'), '/');
}
}
$arrayofinclusion = array();
// If it is a supplier invoice, we want to use last uploaded file
$arrayofinclusion[] = '^'.preg_quote($objectFileName, '/').(($line->doc_type == 'supplier_invoice') ? '.+' : '').'\.pdf$';
$fileFoundList = dol_dir_list($objectDirPath.'/'.$objectFileName, 'files', 0, implode('|', $arrayofinclusion), '(\.meta|_preview.*\.png)$', 'date', SORT_DESC, 0, 1);
if (!empty($fileFoundList)) {
$attachmentFileNameTrunc = $line->doc_ref;
foreach ($fileFoundList as $fileFound) {
if (strstr($fileFound['name'], $objectFileName)) {
// skip native invoice pdfs (canelle)
// We want to retrieve an attachment representative of the supplier invoice, not a fake document generated by Dolibarr.
if ($line->doc_type == 'supplier_invoice') {
if ($fileFound['name'] === $objectFileName.'.pdf') {
if ($objectDirPath && empty($conf->cache['archiveFileList_notfound'][$attachmentFileKey])) {
$arrayofinclusion = array();
// If it is a supplier invoice, we want to use last uploaded file
$arrayofinclusion[] = '^'.preg_quote($objectFileName, '/').(($line->doc_type == 'supplier_invoice') ? '.+' : '').'\.pdf$';
$fileFoundPath = ''; // The path of last file found
$fileFoundList = dol_dir_list($objectDirPath.'/'.$objectFileName, 'files', 0, implode('|', $arrayofinclusion), '(\.meta|_preview.*\.png)$', 'date', SORT_DESC, 0, 1);
if (!empty($fileFoundList)) {
$attachmentFileNameTrunc = $line->doc_ref;
foreach ($fileFoundList as $fileFound) {
if (strstr($fileFound['name'], $objectFileName)) {
// skip native invoice pdfs (canelle)
// We want to retrieve an attachment representative of the supplier invoice, not a fake document generated by Dolibarr.
if ($line->doc_type == 'supplier_invoice') {
if ($fileFound['name'] === $objectFileName.'.pdf') {
continue;
}
} elseif ($fileFound['name'] !== $objectFileName.'.pdf') {
continue;
}
} elseif ($fileFound['name'] !== $objectFileName.'.pdf') {
continue;
}
$fileFoundPath = $objectDirPath.'/'.$objectFileName.'/'.$fileFound['name'];
if (file_exists($fileFoundPath)) {
$archiveFileList[$attachmentFileKey] = array(
'path' => $fileFoundPath,
'name' => $attachmentFileNameTrunc.'.pdf',
);
break;
$fileFoundPath = $objectDirPath.'/'.$objectFileName.'/'.$fileFound['name'];
if (file_exists($fileFoundPath)) {
$archiveFileList[$attachmentFileKey] = array(
'path' => $fileFoundPath,
'name' => $attachmentFileNameTrunc.'.pdf',
);
break;
}
}
}
}
if (empty($fileFoundPath)) {
// Use also a cache if no file were found
$conf->cache['archiveFileList_notfound'][$attachmentFileKey] = 1;
}
}
}

View file

@ -20,9 +20,6 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
// $formatexportset must be defined
// $downloadMode =0 for direct download or =1 to download after writing files or =-1 not to download files
'
@phan-var-force int $formatexportset
@phan-var-force string $type_export
@ -34,10 +31,13 @@
* @var Conf $conf
* @var DoliDB $db
* @var HookManager $hookmanager
*
* @var string $action
* @var int $formatexportset
* @var string $type_export
* @var string $filename
* @var int<-1,1> $downloadMode
* @var string $search_date_end
* @var int<-1,1> $downloadMode Value =0 for direct download or =1 to download after writing files or =-1 not to download files
*/
// Protection to avoid direct call of template
@ -53,13 +53,10 @@ $nodateexport = getDolGlobalInt('ACCOUNTING_EXPORT_NO_DATE_IN_FILENAME');
$siren = getDolGlobalString('MAIN_INFO_SIREN');
$date_export = "_".dol_print_date(dol_now(), '%Y%m%d%H%M%S');
$startaccountingperiod = '';
$endaccountingperiod = dol_print_date(dol_now(), '%Y%m%d');
if (empty($downloadMode)) {
header('Content-Type: text/csv');
}
include_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountancyexport.class.php';
$accountancyexport = new AccountancyExport($db);
@ -123,5 +120,6 @@ if (is_object($hookmanager)) {
}
if (empty($downloadMode)) {
header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename=' . $completefilename);
}

View file

@ -86,7 +86,7 @@ if ($action == 'update') {
$constvalue = str_replace('_ID', '', $key);
$newconstvalue = $constvalue;
if (GETPOSTISSET($constvalue.'_NAME')) {
$newconstvalue = preg_replace('/-.*$/', '', $constvalue).'-'.GETPOST($constvalue.'_NAME');
$newconstvalue = preg_replace('/-.*$/', '', $constvalue).'-'.preg_replace('/[^a-z]/', '', GETPOST($constvalue.'_NAME'));
}
if (GETPOSTISSET($constvalue.'_ID')) {

View file

@ -826,7 +826,7 @@ if ($num > 0) {
// Output of last run
print '<td class="small minwidth150">';
if (!empty($obj->lastoutput)) {
print '<div class="twolinesmax lineheightsmall classfortooltip" title="'.dol_escape_htmltag($obj->lastoutput, 1, 1).'">';
print '<div class="twolinesmax lineheightsmall classfortooltip" title="'.dolPrintHTMLForAttribute($obj->lastoutput, 1, 1).'">';
print dol_trunc(dolGetFirstLineOfText($obj->lastoutput, 2), 100);
print '</div>';
}

View file

@ -714,3 +714,9 @@ UPDATE llx_c_tva SET type_vat = 0 WHERE type_vat < 0;
-- We can't have this on by default because we may have old payment mode using something else than stripe and account matching the pk_xxx rule.
--update llx_societe_rib set ext_payment_site = 'StripeLive' where stripe_account like '%pk_live%' AND ext_payment_site IS NULL;
--update llx_societe_rib set ext_payment_site = 'StripeTest' where stripe_account like '%pk_test%' AND ext_payment_site IS NULL;
-- Delete entry in llx_const for 'OAUTH_XXXX-abc def' when there is a space between avc and def.
DELETE FROM llx_const WHERE name like 'OAUTH_%-% %_ID';
--SELECT fr.rowid, fr.titre as fr.title, fr.nb_gen_done, fr.nb_gen_max, (SELECT COUNT(f.rowid) FROM llx_facture as f WHERE f.fk_fac_rec_source = fr.rowid) as nb_invoices FROM llx_facture_rec as fr WHERE fr.nb_gen_max > 0 AND fr.nb_gen_done >= fr.nb_gen_max AND fr.nb_gen_done > 0 AND fr.nb_gen_done <> (SELECT COUNT(f.rowid) FROM llx_facture as f WHERE f.fk_fac_rec_source = fr.rowid);

View file

@ -37,6 +37,7 @@ Language_en_IE=English (Ireland)
Language_en_IN=English (India)
Language_en_MY=English (Myanmar)
Language_en_NZ=English (New Zealand)
Language_en_PH=English (Philippines)
Language_en_SA=English (Saudi Arabia)
Language_en_SG=English (Singapore)
Language_en_US=English (United States)

View file

@ -902,9 +902,13 @@ if ($action == 'charge' && isModEnabled('stripe')) { // Test on permission not r
$_SESSION["currencyCodeType"] = $currency; // currency really used for payment (coming from Stripe). Will be used for check in paymentok.php.
$_SESSION["paymentType"] = '';
$_SESSION['ipaddress'] = ($remoteip ? $remoteip : 'unknown'); // Payer ip
$_SESSION['payerID'] = is_object($customer) ? $customer->id : '';
$_SESSION['TRANSACTIONID'] = (is_object($charge) ? $charge->id : (is_object($paymentintent) ? $paymentintent->id : ''));
$_SESSION['errormessage'] = $errormessage;
if (!getDolGlobalInt('STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION')) {
$_SESSION['payerID'] = is_object($customer) ? $customer->id : '';
} else {
$_SESSION['payerID'] = '';
}
dol_syslog("Action charge stripe STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION=".getDolGlobalInt('STRIPE_USE_INTENT_WITH_AUTOMATIC_CONFIRMATION')." ip=".$remoteip, LOG_DEBUG, 0, '_payment');
dol_syslog("_SERVER[HTTP_X_FORWARDED_HOST] = ".(empty($_SERVER["HTTP_X_FORWARDED_HOST"]) ? '' : dol_escape_htmltag($_SERVER["HTTP_X_FORWARDED_HOST"])), LOG_DEBUG, 0, '_payment');

View file

@ -601,7 +601,7 @@ div.buttonpayment input:focus {
div.buttonpayment input {
background-color: unset;
color: #fff;
border-bottom: unset;
border: unset;
font-weight: bold;
text-transform: uppercase;
cursor: pointer;

View file

@ -770,7 +770,7 @@ input.buttonpayment, button.buttonpayment, div.buttonpayment {
div.buttonpayment input {
background-color: unset;
border-bottom: unset;
border: unset;
font-weight: bold;
text-transform: uppercase;
color: #333;