';
+
$virtualdiffersfromphysical=0;
if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT)
diff --git a/htdocs/comm/action/index.php b/htdocs/comm/action/index.php
index f3b4f5e1d5e..2727bca7164 100644
--- a/htdocs/comm/action/index.php
+++ b/htdocs/comm/action/index.php
@@ -19,9 +19,6 @@
* along with this program. If not, see .
*/
-error_reporting(E_ALL);
-ini_set('display_errors', true);
-ini_set('html_errors', false);
/**
* \file htdocs/comm/action/index.php
diff --git a/htdocs/commande/class/commande.class.php b/htdocs/commande/class/commande.class.php
index 814c58b92f3..7609d58afb2 100644
--- a/htdocs/commande/class/commande.class.php
+++ b/htdocs/commande/class/commande.class.php
@@ -1038,7 +1038,7 @@ class Commande extends CommonOrder
*/
function addline($desc, $pu_ht, $qty, $txtva, $txlocaltax1=0, $txlocaltax2=0, $fk_product=0, $remise_percent=0, $info_bits=0, $fk_remise_except=0, $price_base_type='HT', $pu_ttc=0, $date_start='', $date_end='', $type=0, $rang=-1, $special_code=0, $fk_parent_line=0, $fk_fournprice=null, $pa_ht=0, $label='',$array_option=0)
{
- global $mysoc;
+ global $mysoc, $conf, $langs;
$commandeid=$this->id;
@@ -1103,6 +1103,20 @@ class Commande extends CommonOrder
$rangmax = $this->line_max($fk_parent_line);
$rangtouse = $rangmax + 1;
}
+
+ $product_type=$type;
+ if (!empty($fk_product))
+ {
+ $product=new Product($this->db);
+ $result=$product->fetch($fk_product);
+ $product_type=$product->type;
+
+ if($conf->global->STOCK_MUST_BE_ENOUGH_FOR_ORDER && $product_type == 0 && $product->stock_reel < $qty) {
+ $this->error=$langs->trans('ErrorStockIsNotEnough');
+ $this->db->rollback();
+ return -3;
+ }
+ }
// TODO A virer
// Anciens indicateurs: $price, $remise (a ne plus utiliser)
@@ -1127,6 +1141,7 @@ class Commande extends CommonOrder
$this->line->localtax1_type = $localtaxes_type[0];
$this->line->localtax2_type = $localtaxes_type[2];
$this->line->fk_product=$fk_product;
+ $this->line->product_type=$product_type;
$this->line->fk_remise_except=$fk_remise_except;
$this->line->remise_percent=$remise_percent;
$this->line->subprice=$pu_ht;
diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php
index 4995ab7eab0..a338f588073 100644
--- a/htdocs/compta/facture.php
+++ b/htdocs/compta/facture.php
@@ -670,6 +670,19 @@ else if ($action == 'add' && $user->rights->facture->creer) {
}
+ if(GETPOST('invoiceAvoirWithPaymentRestAmount', 'int')==1 && $id>0) {
+
+ $facture_source = new Facture($db); // fetch origin object if not previously defined
+ if($facture_source->fetch($object->fk_facture_source)>0) {
+ $totalpaye = $facture_source->getSommePaiement();
+ $totalcreditnotes = $facture_source->getSumCreditNotesUsed();
+ $totaldeposits = $facture_source->getSumDepositsUsed();
+ $remain_to_pay = abs($facture_source->total_ttc - $totalpaye - $totalcreditnotes - $totaldeposits);
+
+ $object->addline($langs->trans('invoiceAvoirLineWithPaymentRestAmount'),$remain_to_pay,1,0,0,0,0,0,'','','TTC');
+ }
+ }
+
// Add predefined lines
/*
TODO delete
@@ -2058,7 +2071,8 @@ if ($action == 'create')
$desc = $form->textwithpicto($text, $langs->transnoentities("InvoiceAvoirDesc"), 1);
print $desc;
- print ' ";
+ print ' 0 ? 'checked="checked"':'').' /> ";
+ print ' 0 ? 'checked="checked"':'').' /> ";
print '' . "\n";
}
diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php
index 07470503ec2..81794f24c55 100644
--- a/htdocs/compta/facture/class/facture.class.php
+++ b/htdocs/compta/facture/class/facture.class.php
@@ -2003,7 +2003,7 @@ class Facture extends CommonInvoice
*/
function addline($desc, $pu_ht, $qty, $txtva, $txlocaltax1=0, $txlocaltax2=0, $fk_product=0, $remise_percent=0, $date_start='', $date_end='', $ventil=0, $info_bits=0, $fk_remise_except='', $price_base_type='HT', $pu_ttc=0, $type= self::TYPE_STANDARD, $rang=-1, $special_code=0, $origin='', $origin_id=0, $fk_parent_line=0, $fk_fournprice=null, $pa_ht=0, $label='',$array_option=0)
{
- global $mysoc;
+ global $mysoc, $conf, $langs;
$facid=$this->id;
@@ -2070,11 +2070,17 @@ class Facture extends CommonInvoice
}
$product_type=$type;
- if ($fk_product)
+ if (!empty($fk_product))
{
$product=new Product($this->db);
$result=$product->fetch($fk_product);
$product_type=$product->type;
+
+ if($conf->global->STOCK_MUST_BE_ENOUGH_FOR_INVOICE && $product_type == 0 && $product->stock_reel < $qty) {
+ $this->error=$langs->trans('ErrorStockIsNotEnough');
+ $this->db->rollback();
+ return -3;
+ }
}
// Insert line
diff --git a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php
index 63edea555e6..af0cb03b68f 100644
--- a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php
+++ b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php
@@ -595,7 +595,7 @@ class pdf_einstein extends ModelePDFCommandes
$posy=$pdf->GetY()+1;
}
*/
- if (! empty($object->date_livraison))
+ /*if (! empty($object->date_livraison))
{
$pdf->SetXY($this->marge_gauche, $posy);
$pdf->SetFont('','B', $default_font_size - 2);
@@ -608,7 +608,7 @@ class pdf_einstein extends ModelePDFCommandes
$pdf->MultiCell(80, 3, $text, 0, 'L', 0);
$posy=$pdf->GetY()+1;
- }
+ }*/
/* TODO
else if (! empty($object->availability_code))
{
diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php
index c7d3843dd0f..1a59167a503 100644
--- a/htdocs/expedition/class/expedition.class.php
+++ b/htdocs/expedition/class/expedition.class.php
@@ -711,12 +711,33 @@ class Expedition extends CommonObject
*/
function addline($entrepot_id, $id, $qty)
{
+ global $conf, $langs;
+
$num = count($this->lines);
$line = new ExpeditionLigne($this->db);
$line->entrepot_id = $entrepot_id;
$line->origin_line_id = $id;
$line->qty = $qty;
+
+ if($conf->global->STOCK_MUST_BE_ENOUGH_FOR_SHIPMENT) {
+ $orderline = new OrderLine($this->db);
+ $orderline->fetch($id);
+ $fk_product = $orderline->fk_product;
+
+ if (!empty($orderline->fk_product))
+ {
+ $product=new Product($this->db);
+ $result=$product->fetch($fk_product);
+ $product_type=$product->type;
+
+ if($product_type == 0 && $product->stock_reel < $qty) {
+ $this->error=$langs->trans('ErrorStockIsNotEnough');
+ $this->db->rollback();
+ return -3;
+ }
+ }
+ }
$this->lines[$num] = $line;
}
diff --git a/htdocs/langs/en_US/bills.lang b/htdocs/langs/en_US/bills.lang
index 5e3e5af56a2..7495d6c1aad 100644
--- a/htdocs/langs/en_US/bills.lang
+++ b/htdocs/langs/en_US/bills.lang
@@ -29,6 +29,8 @@ InvoiceAvoir=Credit note
InvoiceAvoirAsk=Credit note to correct invoice
InvoiceAvoirDesc=The credit note is a negative invoice used to solve fact that an invoice has an amount that differs than amount really paid (because customer paid too much by error, or will not paid completely since he returned some products for example).
invoiceAvoirWithLines=Create Credit Note with lines from the origin invoice
+invoiceAvoirWithPaymentRestAmount=Create Credit Note with the amount of origin invoice payment's lake
+invoiceAvoirLineWithPaymentRestAmount=Credit Note amount of invoice payment's lake
ReplaceInvoice=Replace invoice %s
ReplacementInvoice=Replacement invoice
ReplacedByInvoice=Replaced by invoice %s
diff --git a/htdocs/langs/en_US/deliveries.lang b/htdocs/langs/en_US/deliveries.lang
index c440bea0163..fc4ff2436d4 100644
--- a/htdocs/langs/en_US/deliveries.lang
+++ b/htdocs/langs/en_US/deliveries.lang
@@ -22,4 +22,5 @@ ToAndDate=To___________________________________ on ____/_____/__________
GoodStatusDeclaration=Have received the goods above in good condition,
Deliverer=Deliverer :
Sender=Sender
-Recipient=Recipient
\ No newline at end of file
+Recipient=Recipient
+ErrorStockIsNotEnough=There's not enough stock
\ No newline at end of file
diff --git a/htdocs/langs/es_ES/admin.lang b/htdocs/langs/es_ES/admin.lang
index afb59e741c9..3ead1dd9a39 100644
--- a/htdocs/langs/es_ES/admin.lang
+++ b/htdocs/langs/es_ES/admin.lang
@@ -287,7 +287,7 @@ CurrentVersion=Versión actual de Dolibarr
CallUpdatePage=Llamar a la página de actualización de la estructura y datos de la base de datos %s.
LastStableVersion=Última versión estable disponible
GenericMaskCodes=Puede introducir cualquier máscara numérica. En esta máscara, puede utilizar las siguientes etiquetas: {000000} corresponde a un número que se incrementa en cada uno de %s. Introduzca tantos ceros como longitud desee mostrar. El contador se completará a partir de ceros por la izquierda con el fin de tener tantos ceros como la máscara. {000000+000} b> Igual que el anterior, con una compensación correspondiente al número a la derecha del signo + se aplica a partir del primer %s. {000000@x} igual que el anterior, pero el contador se restablece a cero cuando se llega a x meses (x entre 1 y 12). Si esta opción se utiliza y x es de 2 o superior, entonces la secuencia {yy}{mm} o {yyyy}{mm} también es necesaria. {dd} días (01 a 31). {mm} mes (01 a 12). {yy}, {yyyy} ou {y} año en 2, 4 ó 1 cifra.
-# GenericMaskCodes2={cccc} the client code on n characters {cccc000} the client code on n characters is followed by a counter dedicated for customer. This counter dedicated to customer is reset at same time than global counter. {tttt} The code of company type on n characters (see dictionary-company types).
+GenericMaskCodes2={cccc} código de cliente con n caracteres {cccc000} código de cliente con n caracteres es seguido por un contador dedicado a clientes. Este contador dedicado a clientes se reseteará al mismo tiempo que el contador global. {tttt} El código del tipo de empresa con n caracteres (vea diccionarios->tipos de terceros).
GenericMaskCodes3=Cualquier otro carácter en la máscara se quedará sin cambios. No se permiten espacios
GenericMaskCodes4a=Ejemplo en la 99 ª %s del tercero La Empresa realizada el 31/03/2007:
GenericMaskCodes4b=Ejemplo sobre un tercero creado el 31/03/2007:
@@ -379,15 +379,15 @@ KeepEmptyToUseDefault=Deje este campo vacío para usar el valor por defecto
DefaultLink=Enlace por defecto
ValueOverwrittenByUserSetup=Atención: Este valor puede ser sobreescrito por un valor específico de la configuración del usuario (cada usuario puede tener su propia url clicktodial)
ExternalModule=Módulo externo - Instalado en el directorio %s
-# BarcodeInitForThirdparties=Mass barcode init for thirdparties
-# BarcodeInitForProductsOrServices=Mass barcode init or reset for products or services
-# CurrentlyNWithoutBarCode=Currently, you have %s records on %s %s without barcode defined.
-# InitEmptyBarCode=Init value for next %s empty records
-# EraseAllCurrentBarCode=Erase all current barcode values
-# ConfirmEraseAllCurrentBarCode=Are you sure you want to erase all current barcode values ?
-# AllBarcodeReset=All barcode values have been removed
-# NoBarcodeNumberingTemplateDefined=No numbering barcode template enabled into barcode module setup.
-# NoRecordWithoutBarcodeDefined=No record with no barcode value defined.
+BarcodeInitForThirdparties=Inicio masivo de código de barras para terceros
+BarcodeInitForProductsOrServices=Inicio masivo de código de barras para productos o servicios
+CurrentlyNWithoutBarCode=Actualmente tiene %s registros de %s %s sin código de barras definido.
+InitEmptyBarCode=Iniciar valor para los %s registros vacíos
+EraseAllCurrentBarCode=Eliminar todos los valores actuales de códigos de barras
+ConfirmEraseAllCurrentBarCode=¿Está seguro de querer eliminar todos los registros actuales de códigos de barras?
+AllBarcodeReset=Todos los códigos de barras han sido eliminados
+NoBarcodeNumberingTemplateDefined=No hay establecida una numeración en la configuración del módulo de códigos de barras.
+NoRecordWithoutBarcodeDefined=Sin registros sin códigos de barras definidos.
# Modules
@@ -518,8 +518,8 @@ Module59000Name=Márgenes
Module59000Desc=Módulo para gestionar los márgenes de beneficio
Module60000Name=Comisiones
Module60000Desc=Módulo para gestionar las comisiones de venta
-# Module150010Name=Batch number, eat-by date and sell-by date
-# Module150010Desc=batch number, eat-by date and sell-by date management for product
+Module150010Name=Nº de lote, fecha de consumo, fecha de venta
+Module150010Desc=gestión de productos por nº de lote, fecha de consumo, fecha de venta
Permission11=Consultar facturas
Permission12=Crear/Modificar facturas
Permission13=De-validar facturas
@@ -736,8 +736,8 @@ Permission55001=Leer encuestas
Permission55002=Crear/modificar encuestas
Permission59001=Leer márgenes comerciales
Permission59002=Definir márgenes comerciales
-# DictionaryCompanyType=Thirdparties type
-# DictionaryCompanyJuridicalType=Juridical kinds of thirdparties
+DictionaryCompanyType=Tipos de terceros
+DictionaryCompanyJuridicalType=Tipos jurídicos de terceros
DictionaryProspectLevel=Perspectiva nivel cliente potencial
DictionaryCanton=Departamentos/Provincias/Zonas
DictionaryRegion=Regiones
@@ -969,7 +969,7 @@ SimpleNumRefModelDesc=Devuelve el número bajo el formato %syymm-nnnn donde yy e
ShowProfIdInAddress=Mostrar el identificador profesional en las direcciones de los documentos
ShowVATIntaInAddress=Ocultar el identificador IVA en las direcciones de los documentos
TranslationUncomplete=Traducción parcial
-# SomeTranslationAreUncomplete=Some languages may be partially translated or may contains errors. If you detect some, you can fix language files registering to http://transifex.com/projects/p/dolibarr/.
+SomeTranslationAreUncomplete=Algunos idiomas pueden estar parcialmente traducidos o pueden contener errores. Si detecta algunos, puede arreglar los archivos de idiomas registrándose en http://transifex.com/projects/p/dolibarr/.
MenuUseLayout=Hacer el menú izquierdo ocultable (la opción javascript no debería deshabilitarse)
MAIN_DISABLE_METEO=Deshabilitar la vista meteorológica
TestLoginToAPI=Comprobar conexión a la API
@@ -982,20 +982,20 @@ MAIN_PROXY_USER=Login del servidor proxy
MAIN_PROXY_PASS=Contraseña del servidor proxy
DefineHereComplementaryAttributes=Defina aquí la lista de atributos adicionales, no disponibles por defecto, y que desea gestionar para %s.
ExtraFields=Atributos adicionales
-ExtraFieldsLines=atributos complementarios (líneas)
+ExtraFieldsLines=Atributos adicionales (líneas)
ExtraFieldsThirdParties=Atributos adicionales (terceros)
ExtraFieldsContacts=Atributos adicionales (contactos/direcciones)
ExtraFieldsMember=Atributos adicionales (miembros)
ExtraFieldsMemberType=Atributos adicionales (tipos de miembros)
-ExtraFieldsCustomerOrders=Atributos complementarios (pedidos de clientes)
-ExtraFieldsCustomerInvoices=Atributos complementarios (facturas a clientes)
+ExtraFieldsCustomerOrders=Atributos adicionales (pedidos de clientes)
+ExtraFieldsCustomerInvoices=Atributos adicionales (facturas a clientes)
ExtraFieldsSupplierOrders=Atributos adicionales (pedidos a proveedores)
ExtraFieldsSupplierInvoices=Atributos adicionales (facturas)
ExtraFieldsProject=Atributos adicionales (proyectos)
ExtraFieldsProjectTask=Atributos adicionales (tareas)
ExtraFieldHasWrongValue=El atributo %s tiene un valor incorrecto.
AlphaNumOnlyCharsAndNoSpace=solamente caracteres alfanuméricos sin espacios
-# AlphaNumOnlyLowerCharsAndNoSpace=only alphanumericals and lower case characters without space
+AlphaNumOnlyLowerCharsAndNoSpace=sólo alfanuméricos y minúsculas sin espacio
SendingMailSetup=Configuración del envío por mail
SendmailOptionNotComplete=Atención, en algunos sistemas Linux, con este método de envio, para poder enviar mails en su nombre, la configuración de sendmail debe contener la opción -ba (parámetro mail.force_extra_parameters en el archivo php.ini). Si algunos de sus destinatarios no reciben sus mensajes, pruebe a modificar este parámetro PHP con mail.force_extra_parameters=-ba.
PathToDocuments=Rutas de acceso a documentos
@@ -1022,7 +1022,7 @@ XDebugInstalled=XDebug está cargado.
XCacheInstalled=XCache está cargado
AddRefInList=Mostrar el código de cliente/proveedor en los listados (lista desplegable o autoselección) en la mayoría de enlaces
FieldEdition=Edición del campo %s
-FixTZ=Corrección del TimeZone
+FixTZ=Corrección de zona horaria
FillThisOnlyIfRequired=Ejemplo: +2 (Complete sólo si se registra una desviación del tiempo en la exportación)
GetBarCode=Obtener código de barras
EmptyNumRefModelDesc=Código de cliente/proveedor libre sin verificación. Puede ser modificado en cualquier momento.
@@ -1280,7 +1280,7 @@ PerfDolibarr=Configuración rendimiento/informe de optimización
YouMayFindPerfAdviceHere=En esta página encontrará varias pruebas y consejos relacionados con el rendimiento.
NotInstalled=No instalado, por lo que su servidor no baja de rendimiento con esto.
ApplicativeCache=Aplicación caché
-# MemcachedNotAvailable=No applicative cache found. You can enhance performance by installing a cache server Memcached and a module able to use this cache server. More information here http://wiki.dolibarr.org/index.php/Module_MemCached_EN. Note that a lot of web hosting provider does not provide such cache server.
+MemcachedNotAvailable=No se ha encontrado una aplicación de cache. Puede mejorar el rendimiento instalando un cache server Memcached y un módulo capaz de usar ese servidor de cache. Más información aquí http://wiki.dolibarr.org/index.php/Module_MemCached_EN. Tenga en cuenta que algunos hostings no ofrecen servidores de cache.
OPCodeCache=OPCode caché
NoOPCodeCacheFound=No se ha encontrado ningún OPCode caché. Puede ser que esté usando otro OPCode como XCache o eAccelerator (mejor), o puede que no tenga OPCode caché (peor).
HTTPCacheStaticResources=Caché HTTP para estadísticas de recursos (css, img, javascript)
@@ -1361,7 +1361,7 @@ SendingsAbility=Uso de notas de entrega para los envíos a clientes
NoNeedForDeliveryReceipts=En la mayoría de los casos, las notas de entrega (lista de productos enviados) también actúan como notas de recepción y son firmadas por el cliente. La gestión de las notas de recepción es por lo tanto redundante y rara vez se activará.
FreeLegalTextOnShippings=Mención complementaria en las notas de entrega
##### Deliveries #####
-DeliveryOrderNumberingModules=Módulo de numeración de las notas de entraga
+DeliveryOrderNumberingModules=Módulos de numeración de las notas de recepción
DeliveryOrderModel=Modelo de notas de recepción
DeliveriesOrderAbility=Uso de notas de recepción
FreeLegalTextOnDeliveryReceipts=Texto libre en las notas de recepción
diff --git a/htdocs/langs/es_ES/agenda.lang b/htdocs/langs/es_ES/agenda.lang
index d58a9edbf64..0e6b14eb397 100644
--- a/htdocs/langs/es_ES/agenda.lang
+++ b/htdocs/langs/es_ES/agenda.lang
@@ -33,10 +33,10 @@ ViewDay=Vista diaria
ViewWeek=Vista semanal
ViewWithPredefinedFilters= Ver con los filtros predefinidos
AutoActions= Inclusión automática en la agenda
-AgendaAutoActionDesc= Indique en esta pestaña los eventos para los que desea que Dolibarr cree automáticamente una acción en la agenda. Si no se marca ningún caso (por defecto), solamente las acciones manuales se incluirán en la agenda.
+AgendaAutoActionDesc= Indique en esta pestaña los eventos para los que desea que Dolibarr cree automáticamente un evento en la agenda. Si no se marca nada (por defecto), solamente las acciones manuales se incluirán en la agenda.
AgendaSetupOtherDesc= Esta página le permite configurar algunas opciones que permiten exportar una vista de su agenda Dolibar a un calendario externo (thunderbird, google calendar, ...)
AgendaExtSitesDesc=Esta página le permite configurar calendarios externos para su visualización en la agenda de Dolibarr.
-ActionsEvents= Eventos para que Dolibarr cree una acción de forma automática
+ActionsEvents= Eventos para que Dolibarr cree un evento en la agenda de forma automática
PropalValidatedInDolibarr= Presupuesto %s validado
InvoiceValidatedInDolibarr= Factura %s validada
InvoiceBackToDraftInDolibarr=Factura %s devuelta a borrador
@@ -52,7 +52,7 @@ InvoiceSentByEMail=Factura a cliente %s enviada por e-mail
SupplierOrderSentByEMail=Pedido a proveedor %s enviada por e-mail
SupplierInvoiceSentByEMail=Factura de proveedor %s enviada por e-mail
ShippingSentByEMail=Expedición %s enviada por e-mail
-# ShippingValidated= Shipping %s validated
+ShippingValidated= Envío %s validado
InterventionSentByEMail=Intervención %s enviada por e-mail
NewCompanyToDolibarr= Tercero creado
DateActionPlannedStart= Fecha de inicio prevista
diff --git a/htdocs/langs/es_ES/cron.lang b/htdocs/langs/es_ES/cron.lang
index 6a3d9eadedc..ffcf2d3d1d6 100644
--- a/htdocs/langs/es_ES/cron.lang
+++ b/htdocs/langs/es_ES/cron.lang
@@ -17,10 +17,10 @@ Permission23104 = Ejecutar tarea programada
#
# Admin
#
-CronSetup= Configuracion
+CronSetup= Configuración del módulo Programador
URLToLaunchCronJobs=URL para ejecutar tareas Cron
OrToLaunchASpecificJob=O para ejecutar una tarea en concreto
-KeyForCronAccess=clave para la URL para ejecutar tareas Cron
+KeyForCronAccess=Clave para la URL para ejecutar tareas Cron
FileToLaunchCronJobs=Comando para ejecutar tareas Cron
CronExplainHowToRunUnix=En entorno Unix debes usar crontab para ejecutar el comando cada varios minutos
CronExplainHowToRunWin=En un entorno de Microsoft(tm) Windows puedes usar el programador de tareas para ejecutar el comando cada varios minutos
diff --git a/htdocs/langs/es_ES/exports.lang b/htdocs/langs/es_ES/exports.lang
index 9766705cda3..f9f33d57752 100644
--- a/htdocs/langs/es_ES/exports.lang
+++ b/htdocs/langs/es_ES/exports.lang
@@ -123,10 +123,10 @@ BankCode=Código banco
DeskCode=Código oficina
BankAccountNumber=Número cuenta
BankAccountNumberKey=Dígito Control
-# SpecialCode=Special code
-# ExportStringFilter=%% allows replacing one or more characters in the text
-# ExportDateFilter='AAAA' 'AAAAMM' 'AAAAMMJJ': filters by one year/month/day 'AAAA+AAAA' 'AAAAMM+AAAAMM' 'AAAAMMJJ+AAAAMMJJ': filters over a range of years/months/days '>AAAA' '>AAAAMM' '>AAAAMMJJ': filters on the following years/months/days '>AAAA' '>AAAAMM' '>AAAAMMJJ': filters on the previous years/months/days
-# ExportNumericFilter='NNNNN' filters by one value 'NNNNN+NNNNN' filters over a range of values '>NNNNN' filters by lower values '>NNNNN' filters by higher values
+SpecialCode=Código especial
+ExportStringFilter=%% permite reemplazar uno o más carácteres en el texto
+ExportDateFilter='AAAA' 'AAAAMM' 'AAAAMMJJ': filtros por un año/mes/día 'AAAA+AAAA' 'AAAAMM+AAAAMM' 'AAAAMMJJ+AAAAMMJJ': filtros entre un rango de años/meses/días '>AAAA' '>AAAAMM' '>AAAAMMJJ': filtros en los años/meses/días siguientes '>AAAA' '>AAAAMM' '>AAAAMMJJ': filtros en los años/meses/días anteriores
+ExportNumericFilter='NNNNN' filtros para un valor 'NNNNN+NNNNN' filtros sobre un rango de valores '>NNNNN' filtros para valores menores '>NNNNN' filtros para valores mayores
## filters
SelectFilterFields=Si quiere aplicar un filtro sobre algunos valores, introdúzcalos aquí.
FilterableFields=Campos filtrables
diff --git a/htdocs/langs/es_ES/mails.lang b/htdocs/langs/es_ES/mails.lang
index ba9d40f4491..ffd4b2b9b5f 100644
--- a/htdocs/langs/es_ES/mails.lang
+++ b/htdocs/langs/es_ES/mails.lang
@@ -79,13 +79,13 @@ MailtoEMail=mailto email (hyperlink)
ActivateCheckRead=Activar confirmación de lectura y opción de desuscripción
ActivateCheckReadKey=Clave usada para encriptar la URL de la confirmación de lectura y la función de desuscripción
EMailSentToNRecipients=E-Mail enviado a %s destinatarios.
-# EachInvoiceWillBeAttachedToEmail=A document using default invoice document template will be created and attached to each email.
-# MailTopicSendRemindUnpaidInvoices=Remind of invoice %s (%s)
-# SendRemind=Send remind by EMails
-# RemindSent=%S remind(s) sent
-# AllRecipientSelectedForRemind=All thirdparties selected and if an email is set (note that one mail per invoice will be sent)
-# NoRemindSent=No remind by EMail sent
-# ResultOfMassSending=Result of mass remind sending by EMail
+EachInvoiceWillBeAttachedToEmail=Se creará y adjuntará a cada e-mail un documento usando el modelo de factura por defecto.
+MailTopicSendRemindUnpaidInvoices=Recordatorio de la factura %s (%s)
+SendRemind=Enviar recordatorio por email
+RemindSent=%S recordatorio(s) enviados
+AllRecipientSelectedForRemind=Todos los terceros seleccionados y si hay e-mail definido (se enviará un e-mail por factura)
+NoRemindSent=No se ha enviado recordatorio por e-mail
+ResultOfMassSending=Resultado del enviado masivo de recordatorios por EMail
# Libelle des modules de liste de destinataires mailing
MailingModuleDescContactCompanies=Contactos de terceros (clientes potenciales, clientes, proveedores...)
diff --git a/htdocs/langs/es_ES/main.lang b/htdocs/langs/es_ES/main.lang
index 11894ebc0d1..7ecfdcf2481 100644
--- a/htdocs/langs/es_ES/main.lang
+++ b/htdocs/langs/es_ES/main.lang
@@ -277,7 +277,7 @@ Tb=Tb
Cut=Cortar
Copy=Copiar
Paste=Pegar
-Default=Defecto
+Default=Predeterminado
DefaultValue=Valor por defecto
DefaultGlobalValue=Valor global
Price=Precio
diff --git a/htdocs/langs/es_ES/other.lang b/htdocs/langs/es_ES/other.lang
index 5f22d81b951..26e6ff8cfe3 100644
--- a/htdocs/langs/es_ES/other.lang
+++ b/htdocs/langs/es_ES/other.lang
@@ -49,15 +49,15 @@ Miscellaneous=Miscelánea
NbOfActiveNotifications=Número notificaciones
PredefinedMailTest=Esto es un correo de prueba.\nLas 2 líneas están separadas por un retorno de carro a la línea.
PredefinedMailTestHtml=Esto es un e-mail de prueba(la palabra prueba debe de estar en negrita). Las 2 líneas están separadas por un retorno de carro en la línea
-# PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
-# PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nWe would like to warn you that the invoice __FACREF__ seems to not being payed. So this is the invoice in attachment again, as a reminder.\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
-# PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nYou will find here the commercial proposal __PROPREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
-# PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nYou will find here the order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
-# PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nYou will find here our order __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
-# PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nYou will find here the invoice __FACREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
-# PredefinedMailContentSendShipping=__CONTACTCIVNAME__\n\nYou will find here the shipping __SHIPPINGREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
-# PredefinedMailContentSendFichInter=__CONTACTCIVNAME__\n\nYou will find here the intervention __FICHINTERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
-# PredefinedMailContentThirdparty=__CONTACTCIVNAME__\n\n__PERSONALIZED__\n\n__SIGNATURE__
+PredefinedMailContentSendInvoice=__CONTACTCIVNAME__\n\nLe adjuntamos la factura __FACREF__\n\n__PERSONALIZED__Cordialmente\n\n__SIGNATURE__
+PredefinedMailContentSendInvoiceReminder=__CONTACTCIVNAME__\n\nQueremos recordarle que su factura __FACREF__ parece estar pendiente de pago. Le adjuntamos la factura en cuestión, como recordatorio.\n\n__PERSONALIZED__Cordialmente\n\n__SIGNATURE__
+PredefinedMailContentSendProposal=__CONTACTCIVNAME__\n\nLe adjuntamos el presupuesto __PROPREF__\n\n__PERSONALIZED__Cordialmente\n\n__SIGNATURE__
+PredefinedMailContentSendOrder=__CONTACTCIVNAME__\n\nLe adjuntamos el pedido __ORDERREF__\n\n__PERSONALIZED__Cordialmente\n\n__SIGNATURE__
+PredefinedMailContentSendSupplierOrder=__CONTACTCIVNAME__\n\nLe adjuntamos nuestro pedido __ORDERREF__\n\n__PERSONALIZED__Sincerely\n\n__SIGNATURE__
+PredefinedMailContentSendSupplierInvoice=__CONTACTCIVNAME__\n\nLe adjuntamos la factura __FACREF__\n\n__PERSONALIZED__Cordialmente\n\n__SIGNATURE__
+PredefinedMailContentSendShipping=__CONTACTCIVNAME__\n\nLe adjuntamos el envío __SHIPPINGREF__\n\n__PERSONALIZED__Cordialmente\n\n__SIGNATURE__
+PredefinedMailContentSendFichInter=__CONTACTCIVNAME__\n\nLe adjuntamos la intervención __FICHINTERREF__\n\n__PERSONALIZED__Cordialmente\n\n__SIGNATURE__
+PredefinedMailContentThirdparty=__CONTACTCIVNAME__\n\n__PERSONALIZED__\n\n__SIGNATURE__
DemoDesc=Dolibarr es un software para la gestión de negocios (profesionales o asociaciones), compuesto de módulos funcionales independientes y opcionales. Una demostración que incluya todos estos módulos no tiene sentido porque no utilizará todos los módulos. Además, tiene disponibles varios tipos de perfiles de demostración.
ChooseYourDemoProfil=Seleccione el perfil de demostración que mejor corresponda a su actividad...
DemoFundation=Gestión de miembros de una asociación
diff --git a/htdocs/langs/es_ES/products.lang b/htdocs/langs/es_ES/products.lang
index f6707f5cf5e..b4c8bc5a726 100644
--- a/htdocs/langs/es_ES/products.lang
+++ b/htdocs/langs/es_ES/products.lang
@@ -13,10 +13,10 @@ NewProduct=Nuevo producto
NewService=Nuevo servicio
ProductCode=Código producto
ServiceCode=Código servicio
-# ProductVatMassChange=Mass VAT change
-# ProductVatMassChangeDesc=This page can be used to modify a VAT rate defined on products or services from a value to another. Warning, this change is done on all database.
-# MassBarcodeInit=Mass barcode init
-# MassBarcodeInitDesc=This page can be used to initialize a barcode on objects that does not have barcode defined. Check before that setup of module barcode is complete.
+ProductVatMassChange=Cambio de IVA masivo
+ProductVatMassChangeDesc=Puede usar esta página para modificar la tasa de IVA definida en los productos o servicios de un valor a otro. Tenga cuidado, este cambio se realizará en toda la base de datos.
+MassBarcodeInit=Inicialización masiva de códigos de barra
+MassBarcodeInitDesc=Puede usar esta página para inicializar el código de barras en los objetos que no tienen un código de barras definido. Compruebe antes que el módulo de códigos de barras esté configurado correctamente.
ProductAccountancyBuyCode=Código contable compras
ProductAccountancySellCode=Código contable ventas
ProductOrService=Producto o servicio
@@ -220,10 +220,10 @@ DefinitionOfBarCodeForProductNotComplete=Definición de tipo o valor de código
DefinitionOfBarCodeForThirdpartyNotComplete=Definición de tipo o valor de código de barras incompleta en el tercero %s.
BarCodeDataForProduct=Información del código de barras del producto %s:
BarCodeDataForThirdparty=Información del código de barras del tercero %s:
-# ResetBarcodeForAllRecords=Define barcode value for all records (this will also reset barcode value already defined with new values)
-# PriceByCustomer=Price by customer
-# PriceCatalogue=Catalogue Price
-# PricingRule=Pricing Rules
-# AddCustomerPrice=Add price by customers
-# ForceUpdateChildPriceSoc=Set same price on customer subsidiaries
-# PriceByCustomerLog=Price by customer log
+ResetBarcodeForAllRecords=Definir códigos de barras para todos los registros (machacará los valores de códigos de barras ya registrados)
+PriceByCustomer=Precio por cliente
+PriceCatalogue=Precio del catálogo
+PricingRule=Reglas de precio
+AddCustomerPrice=Añadir precio por clientes
+ForceUpdateChildPriceSoc=Establecer el mismo precio en las filiales de los clientes
+PriceByCustomerLog=Log de precios por clientes
diff --git a/htdocs/langs/es_ES/projects.lang b/htdocs/langs/es_ES/projects.lang
index 7c823527f4e..32b46166f7c 100644
--- a/htdocs/langs/es_ES/projects.lang
+++ b/htdocs/langs/es_ES/projects.lang
@@ -1,6 +1,6 @@
# Dolibarr language file - Source file is en_US - projects
-# RefProject=Ref. project
-# ProjectId=Project Id
+RefProject=Ref. proyecto
+ProjectId=Id proyecto
Project=Proyecto
Projects=Proyectos
SharedProject=Proyecto compartido
@@ -32,18 +32,18 @@ TimeSpent=Tiempo dedicado
TimesSpent=Tiempos dedicados
RefTask=Ref. tarea
LabelTask=Etiqueta tarea
-# TaskTimeSpent=Time spent on tasks
-# TaskTimeUser=Task time user
-# TaskTimeNote=Task time note
-# TaskTimeDate=Task time date
+TaskTimeSpent=Tiempo dedicado en tareas
+TaskTimeUser=Usuario
+TaskTimeNote=Nota
+TaskTimeDate=Fecha
NewTimeSpent=Nuevo tiempo dedicado
MyTimeSpent=Mi tiempo dedicado
MyTasks=Mis tareas
Tasks=Tareas
Task=Tarea
-# TaskDateStart=Task start date
-# TaskDateEnd=Task end date
-# TaskDescription=Task description
+TaskDateStart=Fecha inicio
+TaskDateEnd=Fecha finalización
+TaskDescription=Descripción tarea
NewTask=Nueva tarea
AddTask=Añadir tarea
AddDuration=Indicar duración
@@ -109,12 +109,12 @@ ProjectCreatedInDolibarr=Proyecto %s creado
##### Types de contacts #####
TypeContact_project_internal_PROJECTLEADER=Jefe de proyecto
TypeContact_project_external_PROJECTLEADER=Jefe de proyecto
-# TypeContact_project_internal_PROJECTCONTRIBUTOR=Contributor
-# TypeContact_project_external_PROJECTCONTRIBUTOR=Contributor
+TypeContact_project_internal_PROJECTCONTRIBUTOR=Participante
+TypeContact_project_external_PROJECTCONTRIBUTOR=Participante
TypeContact_project_task_internal_TASKEXECUTIVE=Responsable
TypeContact_project_task_external_TASKEXECUTIVE=Responsable
-# TypeContact_project_task_internal_TASKCONTRIBUTOR=Contributor
-# TypeContact_project_task_external_TASKCONTRIBUTOR=Contributor
+TypeContact_project_task_internal_TASKCONTRIBUTOR=Participante
+TypeContact_project_task_external_TASKCONTRIBUTOR=Participante
SelectElement=Seleccione elemento
AddElement=Vincular a elmento
# Documents models
diff --git a/htdocs/langs/es_ES/propal.lang b/htdocs/langs/es_ES/propal.lang
index 2adb2700e27..b90258f5049 100644
--- a/htdocs/langs/es_ES/propal.lang
+++ b/htdocs/langs/es_ES/propal.lang
@@ -23,7 +23,7 @@ LastPropals=Los %s últimos presupuestos
LastClosedProposals=Los %s últimos presupuestos cerrados
LastModifiedProposals=Los %s últimos presupuestos modificados
AllPropals=Todos los presupuestos
-LastProposals=Ultimos presupuestos
+LastProposals=Últimos presupuestos
SearchAProposal=Buscar un presupuesto
ProposalsStatistics=Estadísticas de presupuestos
NumberOfProposalsByMonth=Número por mes
@@ -57,7 +57,7 @@ RefProposal=Ref. presupuesto
SendPropalByMail=Enviar presupuesto por e-mail
FileNotUploaded=No se ha subido el archivo
FileUploaded=El archivo se ha subido correctamente
-AssociatedDocuments=Documentos asociados al presupuesto :
+AssociatedDocuments=Documentos asociados al presupuesto:
ErrorCantOpenDir=Imposible abrir el directorio
DatePropal=Fecha presupuesto
DateEndPropal=Fecha fin de validez
diff --git a/htdocs/langs/es_ES/workflow.lang b/htdocs/langs/es_ES/workflow.lang
index a2de980a2fe..f135f135ccb 100644
--- a/htdocs/langs/es_ES/workflow.lang
+++ b/htdocs/langs/es_ES/workflow.lang
@@ -1,5 +1,5 @@
# Dolibarr language file - Source file is en_US - admin
-WorkflowSetup=Configuración del módulo workflow
+WorkflowSetup=Configuración del módulo Flujo de trabajo
WorkflowDesc=Este módulo le permite cambiar el comportamiento automatizado. De forma predeterminada, el workflow está abierto y no impuesto. Active los enlaces automáticos que le interesan.
ThereIsNoWorkflowToModify=No hay workflow modificable para los módulos que tiene activados.
descWORKFLOW_PROPAL_AUTOCREATE_ORDER=Crear un pedido de cliente automáticamente a la firma de un presupuesto
diff --git a/htdocs/user/class/user.class.php b/htdocs/user/class/user.class.php
index 0bc8a018583..09a458ff099 100644
--- a/htdocs/user/class/user.class.php
+++ b/htdocs/user/class/user.class.php
@@ -1496,7 +1496,7 @@ class User extends CommonObject
$outputlangs->load("users");
$outputlangs->load("other");
- $subject = $outputlangs->trans("SubjectNewPassword");
+ $subject = $outputlangs->transnoentitiesnoconv("SubjectNewPassword");
// Define $urlwithroot
//$urlwithouturlroot=preg_replace('/'.preg_quote(DOL_URL_ROOT,'/').'$/i','',trim($dolibarr_main_url_root));