This is a root sales person and cannot be edited.,Se trata de una persona de las ventas raíz y no se puede editar .
"Set Default Values like Company, Currency, Current Fiscal Year, etc.","Establecer Valores Predeterminados , como Empresa , Moneda, Año Fiscal Actual, etc"
Serial No {0} does not belong to Item {1},Número de orden {0} no pertenece al elemento {1}
Cost of Goods Sold,Costo de las Ventas,
{0} {1} not in any active Fiscal Year.,{0} {1} no en algún año fiscal activo.
Packing List,Lista de Envío,
From Package No.,Del Paquete N o,
Quotation Trends,Tendencias de Cotización,
Purchase Order Item,Articulos de la Orden de Compra,
Avg. Buying Rate,Promedio de Compra,
Serial No {0} created,Número de orden {0} creado,
If subcontracted to a vendor,Si es sub-contratado a un vendedor,
"in Minutes,
Updated via 'Time Log'",En minutos actualizado a través de 'Bitácora de tiempo'
Maintenance Time,Tiempo de Mantenimiento,
Opening Time,Tiempo de Apertura,
Bill of Materials,Lista de materiales (LdM)
Role Allowed to Set Frozen Accounts & Edit Frozen Entries,Función Permitida para Establecer Cuentas Congeladas y Editar Entradas Congeladas,
Billing Rate,Tasa de facturación,
The new BOM after replacement,La nueva Solicitud de Materiales después de la sustitución,
Row {0}: Debit entry can not be linked with a {1},Fila {0}: Débito no puede vincularse con {1}
Print Heading,Título de impresión,
Electricity Cost,Coste de electricidad,
Commission on Sales,Comisión de Ventas,
Costing,Costeo,
Retail & Wholesale,Venta al por menor y al por mayor,
Default Holiday List,Listado de vacaciones / feriados predeterminados,
Journal Entry,Asientos Contables,
Completed Qty can not be greater than 'Qty to Manufacture',La cantidad completada no puede ser mayor que la cantidad a producir,
Qty as per Stock UOM,Cantidad de acuerdo a la Unidad de Medida del Inventario,
Manufacture,Manufactura,
Write Off Outstanding Amount,Cantidad de desajuste,
Manage Customer Group Tree.,Administrar el listado de las categorías de clientes,
Retail,venta al por menor,
Time at which materials were received,Momento en que se recibieron los materiales,
Expected End Date,Fecha de finalización prevista,
Delete all the Transactions for this Company,Eliminar todas las transacciones para esta empresa,
Abbreviation is mandatory,La Abreviación es mandatoria,
End of Life,Final de la Vida,
Reqd By Date,Solicitado Por Fecha,
You are not authorized to set Frozen value,Usted no está autorizado para fijar el valor congelado,
Leave Approver,Supervisor de Vacaciones,
Package Weight Details,Peso Detallado del Paquete,
Generate Schedule,Generar Horario,
Employee External Work History,Historial de Trabajo Externo del Empleado,
"Here you can maintain family details like name and occupation of parent, spouse and children","Aquí usted puede mantener los detalles de la familia como el nombre y ocupación de los padres, cónyuge e hijos"
depends_on,depende de,
Secured Loans,Préstamos Garantizados,
This is a root territory and cannot be edited.,Este es un territorio raíz y no se puede editar .
Make Supplier Quotation,Crear cotización de proveedor,
Repeat Customer Revenue,Repita los ingresos de los clientes,
New Cost Center Name,Nombre de Nuevo Centro de Coste,
"If checked, the tax amount will be considered as already included in the Print Rate / Print Amount","Si se selecciona, el importe del impuesto se considerará como ya incluido en el Monto  a Imprimir"
Purchase Taxes and Charges,Impuestos de Compra y Cargos,
This is an example website auto-generated from ERPNext,Este es un sitio web ejemplo generado por automáticamente por ERPNext,
WIP Warehouse,WIP Almacén,
Actual Start Date,Fecha de inicio actual,
Make Journal Entry,Haga Comprobante de Diario,
Contract End Date must be greater than Date of Joining,La Fecha de Finalización de Contrato debe ser mayor que la Fecha de la Firma,
Delivery Note Item,Articulo de la Nota de Entrega,
Customer required for 'Customerwise Discount',Cliente requiere para ' Customerwise descuento '
Potential opportunities for selling.,Oportunidades de venta,
Against Sales Order Item,Contra la Orden de Venta de Artículos,
Sample Size,Tamaño de la muestra,
Terms and Conditions1,Términos y Condiciones 1,
Customerwise Discount,Customerwise Descuento,
Row {0}:Start Date must be before End Date,Fila {0}: Fecha de inicio debe ser anterior Fecha de finalización,
"Tax detail table fetched from item master as a string and stored in this field.
Used for Taxes and Charges","Tabla de detalle de Impuesto descargada de maestro de artículos como una cadena y almacenada en este campo.
 Se utiliza para las tasas y cargos"
Operating Cost,Costo de Funcionamiento,
Total Target,Totales del Objetivo,
"Can not filter based on Voucher No, if grouped by Voucher","No se puede filtrar en función al 'No. de comprobante', si esta agrupado por 'nombre'"
Actual Operation Time,Tiempo de operación actual,
To Deliver and Bill,Para Entregar y Bill,
Warehouse required for stock Item {0},Almacén requerido para la acción del artículo {0}
Territory Targets,Territorios Objetivos,
Warranty / AMC Status,Garantía / AMC Estado,
Employee Name,Nombre del Empleado,
Maintenance Schedule is not generated for all the items. Please click on 'Generate Schedule',"Programa de mantenimiento no se genera para todos los artículos. Por favor, haga clic en ¨ Generar Programación¨"
New Sales Orders,Nueva Órden de Venta,
Software,Software,
Earnest Money,Dinero Ganado,
Term Details,Detalles de los Terminos,
Target Warehouse,Inventario Objetivo,
Net Weight UOM,Unidad de Medida Peso Neto,
Row #{0}: Timings conflicts with row {1},Fila # {0}: conflictos con fila {1}
Operation Time,Tiempo de funcionamiento,
Set prefix for numbering series on your transactions,Establezca los prefijos de sus transacciones,
Under AMC,Bajo AMC,
Warranty Period (in days),Período de garantía ( en días)
Next email will be sent on:,Siguiente correo electrónico será enviado el:
Case No(s) already in use. Try from Case No {0},Nº de caso ya en uso. Intente Nº de caso {0}
Target On,Objetivo On,
"To not apply Pricing Rule in a particular transaction, all applicable Pricing Rules should be disabled.","Para no aplicar la Regla de Precios en una transacción en particular, todas las Reglas de Precios aplicables deben ser desactivadas."
"Sorry, Serial Nos cannot be merged","Lo sentimos , Nos de serie no se puede fusionar"
Manufacturing Settings,Ajustes de Manufactura,
Row {0}: Please check 'Is Advance' against Account {1} if this is an advance entry.,"Fila {0}: Por favor, consulte ""¿Es Avance 'contra la Cuenta {1} si se trata de una entrada con antelación."
Capital Equipments,Maquinaria y Equipos,
{0} {1} is not submitted,{0} {1} no esta presentado,
Earning & Deduction,Ganancia y Descuento,
Leave Encashed?,Vacaciones Descansadas?
Send regular summary reports via Email.,Enviar informes periódicos resumidos por correo electrónico.
'Based On' and 'Group By' can not be same,"""Basado en"" y ""Agrupar por"" no pueden ser el mismo"
Phone No,Teléfono No,
Default Cost Center,Centro de coste por defecto,
Employee Number,Número del Empleado,
Customer / Lead Address,Cliente / Dirección de Oportunidad,
In Words will be visible once you save the Quotation.,En palabras serán visibles una vez que guarde la cotización.
Installation Note {0} has already been submitted,La nota de instalación {0} ya se ha presentado,
Manage Territory Tree.,Vista en árbol para la administración de los territorios,
Serial number {0} entered more than once,Número de serie {0} entraron más de una vez,
Receiver List is empty. Please create Receiver List,"Lista de receptores está vacía. Por favor, cree Lista de receptores"
Target Detail,Objetivo Detalle,
Purchase Taxes and Charges Template,Plantillas de Cargos e Impuestos,
Current Liabilities,Pasivo Corriente,
Titles for print templates e.g. Proforma Invoice.,"Títulos para plantillas de impresión, por ejemplo, Factura Proforma."
Freight and Forwarding Charges,Cargos por transporte de mercancías y transito,
Successfully deleted all transactions related to this company!,Eliminado correctamente todas las transacciones relacionadas con esta empresa!
Expense or Difference account is mandatory for Item {0} as it impacts overall stock value,"Cuenta de Gastos o Diferencia es obligatorio para el elemento {0} , ya que impacta el valor del stock"
Credit,Crédito,
90-Above,90-Mayor,
Root cannot have a parent cost center,Raíz no puede tener un centro de costes de los padres,
Accounting Entry for Stock,Asiento contable de inventario,
Total Purchase Cost (via Purchase Invoice),Coste total de compra (mediante compra de la factura)
Row {0}: Conversion Factor is mandatory,Fila {0}: Factor de conversión es obligatoria,
Purchase Receipt,Recibos de Compra,
Disable,Inhabilitar,
Table for Item that will be shown in Web Site,Tabla de Artículo que se muestra en el Sitio Web,
Applicable For,Aplicable para,
Start date should be less than end date for Item {0},La fecha de inicio debe ser menor que la fecha de finalización para el punto {0}
Rate (Company Currency),Precio (Moneda Local)
Convert to Group,Convertir al Grupo,
{0} payment entries can not be filtered by {1},{0} registros de pago no se pueden filtrar por {1}
Serial No {0} not in stock,Número de orden {0} no está en stock,
Ref Date,Fecha Ref,
Bank Statement balance as per General Ledger,Balanza de Estado de Cuenta Bancario según Libro Mayor,
Setup Series,Serie de configuración,
Actual Start Time,Hora de inicio actual,
Barcode {0} already used in Item {1},El código de barras {0} ya se utiliza en el elemento {1}
Health Care,Cuidado de la Salud,
Manufacturer Part Number,Número de Pieza del Fabricante,
Re-Order Level,Reordenar Nivel,
Sales Team Details,Detalles del equipo de ventas,
Sales Order {0} is not submitted,Órden de Venta {0} no esta presentada,
Row #{0}: Rate must be same as {1}: {2} ({3} / {4}) ,Fila # {0}: Tasa debe ser el mismo que {1}: {2} ({3} / {4})
Confirmed orders from Customers.,Pedidos en firme de los clientes.
Service Address,Dirección del Servicio,
Application of Funds (Assets),Aplicación de Fondos (Activos )
Discount on Price List Rate (%),Descuento sobre la tarifa del listado de precios (%)
The name of your company for which you are setting up this system.,El nombre de su empresa para la que va a configurar el sistema.
Frozen,Congelado,
HR Manager,Gerente de Recursos Humanos,
Warning: System will not check overbilling since amount for Item {0} in {1} is zero,Advertencia : El sistema no comprobará sobrefacturación desde monto para el punto {0} en {1} es cero,
Either target qty or target amount is mandatory.,Cualquiera Cantidad de destino o importe objetivo es obligatoria.
Row # {0}: Returned Item {1} does not exists in {2} {3},Fila # {0}: El artículo vuelto {1} no existe en {2} {3}
Not Started,Sin comenzar,
Default Currency,Moneda Predeterminada,
This is a root account and cannot be edited.,Esta es una cuenta raíz y no se puede editar .
Requested Items To Be Transferred,Artículos solicitados para ser transferido,
Purchase Receipt {0} is not submitted,Recibo de Compra {0} no se presenta,
Account: {0} with currency: {1} can not be selected,Cuenta: {0} con moneda: {1} no puede ser seleccionada,
Sales,Venta,
Additional Discount Amount (Company Currency),Monto adicional de descuento (Moneda de la compañía)
Row {0}: Payment against Sales/Purchase Order should always be marked as advance,Fila {0}: El pago de Compra/Venta siempre debe estar marcado como anticipo,
Leave Approvers,Supervisores de Vacaciones,
Please specify a valid Row ID for row {0} in table {1},"Por favor, especifique un ID de fila válida para la fila {0} en la tabla {1}"
Parent Customer Group,Categoría de cliente principal,
Total Outstanding Amount,Total Monto Pendiente,
Select Monthly Distribution to unevenly distribute targets across months.,Seleccione Distribución Mensual de distribuir de manera desigual a través de objetivos meses.
You need to enable Shopping Cart,Necesita habilitar Carito de Compras,
Rented,Alquilado,
Shipping Address Name,Dirección de envío Nombre,
Moving Average,Promedio Movil,
Qty to Deliver,Cantidad para Ofrecer,
Row #{0}: Please specify Serial No for Item {1},"Fila # {0}: Por favor, especifique No de Serie de artículos {1}"
Please make sure you really want to delete all the transactions for this company. Your master data will remain as it is. This action cannot be undone.,"Por favor, asegúrese que realmente desea borrar todas las transacciones de esta compañía. Sus datos maestros permanecerán intactos. Esta acción no se puede deshacer."
Shopping Cart Settings,Compras Ajustes,
Raw Material Cost,Costo de la Materia Prima,
A Customer Group exists with same name please change the Customer name or rename the Customer Group,"Existe una categoría de cliente con el mismo nombre, por favor cambie el nombre del cliente o cambie el nombre de la categoría"
Quotation {0} is cancelled,Cotización {0} se cancela,
Quality Inspection required for Item {0},Inspección de la calidad requerida para el articulo {0},
What does it do?,¿Qué hace?,
Actual Time in Hours (via Timesheet),Tiempo actual en horas,
Make Sales Order,Hacer Orden de Venta,
Doc Type,Tipo Doc.,
List a few of your customers. They could be organizations or individuals.,Enumere algunos de sus clientes. Pueden ser organizaciones o individuos.,
Ref Code,Código Referencia,
Default Selling Cost Center,Centros de coste por defecto,
Report Date,Fecha del Informe,
Purchase Invoice {0} is already submitted,Factura de Compra {0} ya existe,
Currency and Price List,Divisa y Lista de precios,
Current Assets,Activo Corriente,
Re-Order Qty,Reordenar Cantidad,
Days for which Holidays are blocked for this department.,Días para los que Días Feriados se bloquean para este departamento .
Customer Details,Datos del Cliente,
**Fiscal Year** represents a Financial Year. All accounting entries and other major transactions are tracked against **Fiscal Year**.,**Año Fiscal** representa un 'Ejercicio Financiero'. Los asientos contables y otras transacciones importantes se registran contra **Año Fiscal**
Actual Qty is mandatory,Cantidad actual es obligatoria,
Stock Reconciliation,Reconciliación de Inventario,
On Previous Row Total,En la Anterior Fila Total,
Serial No / Batch,N º de serie / lote,
Supplier Quotation Item,Articulo de la Cotización del Proveedor,
Brokerage,Brokerage,
Opportunity From,Oportunidad De,
Supplier Address,Dirección del proveedor,
Expected Delivery Date,Fecha Esperada de Envio,
Parent Item,Artículo Principal,
Software Developer,Desarrollador de Software,
Website Item Groups,Grupos de Artículos del Sitio Web,
Marketing Expenses,Gastos de Comercialización,
"Cannot declare as lost, because Quotation has been made.","No se puede declarar como perdido , porque la cotización ha sido hecha."
user@example.com,user@example.com,
Source Warehouse,fuente de depósito,
Root Type is mandatory,Tipo Root es obligatorio,
Scheduled,Programado,
Depends on Leave Without Pay,Depende de ausencia sin pago,
Total Paid Amt,Total Pagado Amt,
'Days Since Last Order' must be greater than or equal to zero,'Días desde el último pedido' debe ser mayor o igual a cero,
For Warehouse,Por almacén,
Purchase Order Items To Be Received,Productos de la Orden de Compra a ser Recibidos,
Delivery Note Message,Mensaje de la Nota de Entrega,
Raw Materials Supplied Cost,Coste materias primas suministradas,
Row No {0}: Amount cannot be greater than Pending Amount against Expense Claim {1}. Pending Amount is {2},linea No. {0}: El importe no puede ser mayor que el reembolso pendiente {1}. El importe pendiente es {2}
Synced With Hub,Sincronizado con Hub,
Cost Center with existing transactions can not be converted to ledger,Centro de Costos de las transacciones existentes no se puede convertir en el libro mayor,
Please enter Item Code to get batch no,"Por favor, ingrese el código del producto para obtener el No. de lote"
Series is mandatory,Serie es obligatorio,
Item Shortage Report,Reportar carencia de producto,
Rate at which Price list currency is converted to customer's base currency,Grado en el que la lista de precios en moneda se convierte en la moneda base del cliente,
Sales Invoice No,Factura de Venta No,
Don't send Employee Birthday Reminders,En enviar recordatorio de cumpleaños del empleado,
Ordered Items To Be Delivered,Artículos pedidos para ser entregados,
Point-of-Sale Profile,Perfiles del Punto de Venta POS,
Price List must be applicable for Buying or Selling,la lista de precios debe ser aplicable para comprar o vender,
Serial No,Números de Serie,
Bank Reconciliation Statement,Extractos Bancarios,
{0} is mandatory for Item {1},{0} es obligatorio para el producto {1}
Copy From Item Group,Copiar de Grupo de Elementos,
{0} ({1}) cannot be greater than planned quanitity ({2}) in Production Order {3},{0} ({1}) no puede ser mayor que cantidad planificada ({2}) en la Orden de Producción {3}
Date of Joining must be greater than Date of Birth,Fecha de acceso debe ser mayor que Fecha de Nacimiento,
Settings for Buying Module,Ajustes para la compra de módulo,
Sales Person Targets,Metas de Vendedor,
Standard contract terms for Sales or Purchase.,Condiciones contractuales estándar para ventas y compras.
Actual Qty (at source/target),Cantidad Actual (en origen/destino)
Stock User,Foto del usuario,
On Previous Row Amount,En la Fila Anterior de Cantidad,
Creation Time,Momento de la creación,
Default Source Warehouse,Origen predeterminado Almacén,
Sales Taxes and Charges Template,Plantilla de Cargos e Impuestos sobre Ventas,
Educational Qualification,Capacitación Académica,
From Time,Desde fecha,
Health Concerns,Preocupaciones de salud,
Purchase Receipt Item,Recibo de Compra del Artículo,
Name or Email is mandatory,Nombre o Email es obligatorio,
Transactions can only be deleted by the creator of the Company,Las transacciones sólo pueden ser borrados por el creador de la Compañía,
Parent Cost Center,Centro de Costo Principal,
Loans and Advances (Assets),Préstamos y anticipos (Activos)
Shipments,Los envíos,
Please enter 'Is Subcontracted' as Yes or No,"Por favor, introduzca si 'Es Subcontratado' o no"
Abbreviation already used for another company,La Abreviación ya está siendo utilizada para otra compañía,
Purchase Order Item Supplied,Orden de Compra del Artículo Suministrado,
Sales Order Required,Orden de Ventas Requerida,
Required Date,Fecha Requerida,
Allow Overtime,Permitir horas extras,
Reference No is mandatory if you entered Reference Date,Referencia No es obligatorio si introdujo Fecha de Referencia,
Pricing Rule,Reglas de Precios,
View Task,Vista de tareas,
`Freeze Stocks Older Than` should be smaller than %d days.,`Congelar Inventarios Anteriores a` debe ser menor que %d días .
Purchase Order number required for Item {0},Número de la Orden de Compra se requiere para el elemento {0}
Create rules to restrict transactions based on values.,Crear reglas para restringir las transacciones basadas en valores .
Raw Material Item Code,Materia Prima Código del Artículo,
Supplier Quotation,Cotizaciónes a Proveedores,
Activity Cost exists for Employee {0} against Activity Type - {1},Existe un costo de actividad para el empleado {0} contra el tipo de actividad - {1}
Set targets Item Group-wise for this Sales Person.,Establecer objetivos artículo grupo que tienen para este vendedor.
Total Value Difference (Out - In),Diferencia  (Salidas - Entradas)
BOM and Manufacturing Quantity are required,Se requiere la lista de materiales (LdM) y cantidad a fabricar.
Product Bundle,Conjunto/Paquete de productos,
Requested For,Solicitados para,
{0} against Sales Invoice {1},{0} contra Factura de Ventas {1}
Select Items,Seleccione Artículos,
Row {0}: {1} {2} does not match with {3},Fila {0}: {1} {2} no coincide con {3}
Quality Management,Gestión de la Calidad,
Details of the operations carried out.,Los detalles de las operaciones realizadas.
Quality Inspection Reading,Lectura de Inspección de Calidad,
Net Amount (Company Currency),Importe neto (moneda de la compañía)
Track this Sales Order against any Project,Seguir este de órdenes de venta en contra de cualquier proyecto,
"Selling must be checked, if Applicable For is selected as {0}","Ventas debe ser seleccionado, si se selecciona Aplicable Para como {0}"
Maintain Same Rate Throughout Sales Cycle,Mantener misma tasa durante todo el ciclo de ventas,
Salary,Salario,
Stock Liabilities,Inventario de Pasivos,
Shipping Rule Label,Regla Etiqueta de envío,
This Item is a Template and cannot be used in transactions. Item attributes will be copied over into the variants unless 'No Copy' is set,Este artículo es una plantilla y no se puede utilizar en las transacciones. Atributos artículo se copiarán en las variantes menos que se establece 'No Copy'
Target  Amount,Monto Objtetivo,
S.O. No.,S.O. No.
"If the account is frozen, entries are allowed to restricted users.","Si la cuenta está congelada , las entradas se les permite a los usuarios restringidos."
Sales Taxes and Charges,Los impuestos y cargos de venta,
Warehouse {0} can not be deleted as quantity exists for Item {1},Almacén {0} no se puede eliminar mientras exista cantidad de artículo {1}
Bank Account No.,Número de Cuenta Bancaria,
Shipping Account,cuenta Envíos,
Parent Item Group,Grupo Principal de Artículos,
Warranty Period (Days),Período de garantía ( Días)
Campaign Naming By,Nombramiento de la Campaña Por,
Terms and Conditions Content,Términos y Condiciones Contenido,
Serial No {0} does not belong to Warehouse {1},Número de orden {0} no pertenece al Almacén {1}
Shopping Cart Shipping Rule,Compras Regla de envío,
Make Payment Entry,Registrar pago,
Scheduled Date,Fecha prevista,
% Ordered,% Pedido,
'Expected Start Date' can not be greater than 'Expected End Date',La 'Fecha de inicio estimada' no puede ser mayor que la 'Fecha de finalización estimada'
UOM Conversion Detail,Detalle de Conversión de Unidad de Medida,
"To filter based on Party, select Party Type first","Para filtrar en base a la fiesta, seleccione Partido Escriba primero"
Contact Name,Nombre del Contacto,
Quotation Lost Reason,Cotización Pérdida Razón,
Monthly Distribution Percentages,Los porcentajes de distribución mensuales,
Plan for maintenance visits.,Plan para las visitas de mantenimiento.
SO Qty,SO Cantidad,
Quotation Series,Serie Cotización,
New Customer Revenue,Ingresos de nuevo cliente,
"Special Characters except ""-"", ""#"", ""."" and ""/"" not allowed in naming series","Caracteres especiales excepto ""-"" ""."", ""#"", y ""/"" no permitido en el nombramiento de serie"
Schedule,Horario,
Invoiced Amount (Exculsive Tax),Cantidad facturada ( Impuesto exclusive )
Material Requests {0} created,Solicitud de Material {0} creada,
Has Variants,Tiene Variantes,
Taxes and Charges Added (Company Currency),Impuestos y Cargos Añadidos (Moneda Local)
Buyer of Goods and Services.,Compradores de Productos y Servicios.
Stock Balance,Balance de Inventarios,
Cost Center For Item with Item Code ',Centro de Costos para artículo con Código del artículo '
Write Off Cost Center,Centro de costos de desajuste,
Please contact to the user who have Sales Master Manager {0} role,"Por favor, póngase en contacto con el usuario con función de Gerente de Ventas {0}"
Net Rate,Tasa neta,
Reference Row #,Referencia Fila #
Employee Internal Work History,Historial de Trabajo Interno del Empleado,
Salary Mode,Modo de Salario,
Please enter parent cost center,"Por favor, ingrese el centro de costos maestro"
Against Doctype,Contra Doctype,
{0} {1}: Cost Center is mandatory for Item {2},{0} {1}: 'Centro de Costos' es obligatorio para el producto {2}
The net weight of this package. (calculated automatically as sum of net weight of items),El peso neto de este paquete . ( calculados automáticamente como la suma del peso neto del material)
Projected Qty,Cant. Proyectada,
Moving Average Rate,Porcentaje de Promedio Movil,
Account {0}: Parent account {1} does not exist,Cuenta {0}: Cuenta Padre {1} no existe,
Net Total (Company Currency),Total neto (Moneda Local)
Delivery Note {0} must not be submitted,Nota de Entrega {0} no debe estar presentada,
Lead Details,Iniciativas,
Serial #,Serial #
Vehicle No,Vehículo No,
Lower Income,Ingreso Bajo,
Duplicate Serial No entered for Item {0},Duplicar Serie No existe para la partida {0}
Delivered Amount,Cantidad Entregada,
New Company,Nueva Empresa,
Permanent Address Is,Dirección permanente es,
Max: {0},Max: {0}
{0} {1} has been modified. Please refresh.,{0} {1} ha sido modificado. Por favor actualizar.
Item Tax,Impuesto del artículo,
Item Prices,Precios de los Artículos,
Balance must be,Balance debe ser,
A third party distributor / dealer / commission agent / affiliate / reseller who sells the companies products for a commission.,Terceros / proveedor / comisionista / afiliado / distribuidor que vende productos de empresas a cambio de una comisión.
Try planning operations for X days in advance.,Trate de operaciones para la planificación de X días de antelación.
Expected End Date can not be less than Expected Start Date,La fecha prevista de finalización no puede ser inferior a la fecha de inicio,
Please mention Round Off Account in Company,"Por favor, indique la cuenta que utilizará para el redondeo--"
Serial No {0} does not belong to Delivery Note {1},Número de orden {0} no pertenece a la nota de entrega {1}
Target Qty,Cantidad Objetivo,
"Weight is mentioned,\nPlease mention ""Weight UOM"" too","Se menciona Peso, \n ¡Por favor indique ""Peso Unidad de Medida"" también"
You can not change rate if BOM mentioned agianst any item,No se puede cambiar la tasa si hay una Solicitud de Materiales contra cualquier artículo,
Accounts,Contabilidad,
per hour,por horas,
Set as Closed,Establecer como Cerrada,
Work In Progress,Trabajos en Curso,
Credit Controller,Credit Controller,
Purchase Receipt Item Supplied,Recibo de Compra del Artículo Adquirido,
All Sales Partner Contact,Todo Punto de Contacto de Venta,
View Leads,Ver ofertas,
Currency is required for Price List {0},Se requiere de divisas para Lista de precios {0}
Date of Birth cannot be greater than today.,La fecha de creación no puede ser mayor a la fecha de hoy.
Reports to,Informes al,
Provisional Profit / Loss (Credit),Beneficio / Pérdida (Crédito) Provisional,
Ref SQ,Ref SQ,
Total (Company Currency),Total (Compañía moneda)
% of materials delivered against this Sales Order,% de materiales entregados contra la orden de venta,
Account Currency,Moneda de la Cuenta,
Party Balance,Saldo de socio,
Name of the Monthly Distribution,Nombre de la Distribución Mensual,
Finished Item {0} must be entered for Manufacture type entry,El producto terminado {0} debe ser introducido para la fabricación,
Status must be one of {0},Estado debe ser uno de {0}
Leave Block List,Lista de Bloqueo de Vacaciones,
Customer's Item Code,Código de artículo del Cliente,
Item Tax Amount,Total de impuestos de los artículos,
Maintenance Visit Purpose,Propósito de la Visita de Mantenimiento,
No of Sent SMS,No. de SMS enviados,
Stock Received But Not Billed,Inventario Recibido pero no facturados,
Stores,Tiendas,
Report Type is mandatory,Tipo de informe es obligatorio,
"System User (login) ID. If set, it will become default for all HR forms.","Usuario del Sistema (login )ID. Si se establece , será por defecto para todas las formas de Recursos Humanos."
UOM Conversion factor is required in row {0},"El factor de conversión de la (UdM) Unidad de medida, es requerida en la linea {0}"
Electronics,Electrónica,
Heads (or groups) against which Accounting Entries are made and balances are maintained.,Cuentas (o grupos) contra el que las entradas contables se hacen y los saldos se mantienen.
If Income or Expense,Si es un ingreso o egreso,
Row {0}: An Reorder entry already exists for this warehouse {1},Fila {0}: Una entrada para reordenar ya existe para este almacén {1}
Lead,Iniciativas,
There is not enough leave balance for Leave Type {0},No hay suficiente saldo para Tipo de Vacaciones {0}
Repeat Customers,Repita los Clientes,
Depreciation,Depreciación,
Please create Customer from Lead {0},"Por favor, cree Cliente de la Oportunidad {0}"
Make Sales Invoice,Hacer Factura de Venta,
Supplier Invoice No,Factura del Proveedor No,
Payment Account,Pago a cuenta,
Cash Entry,Entrada de Efectivo,
Select Fiscal Year...,Seleccione el año fiscal ...
"For row {0} in {1}. To include {2} in Item rate, rows {3} must also be included","Para la fila {0} en {1}. e incluir {2} en la tasa del producto, las filas {3} también deben ser incluidas"
Workstation is closed on the following dates as per Holiday List: {0},La estación de trabajo estará cerrada en las siguientes fechas según la lista de vacaciones: {0}
Select company name first.,Seleccionar nombre de la empresa en primer lugar.
With Items,Con artículos,
Serial No {0} does not exist,Número de orden {0} no existe,
Required By,Requerido por,
Purchase Invoice Item,Factura de Compra del artículo,
Quotation {0} not of type {1},Cotización {0} no es de tipo {1}
Material Request {0} is cancelled or stopped,Solicitud de Material {0} cancelada o detenida,
Supplied Items,Artículos suministrados,
Users with this role are allowed to set frozen accounts and create / modify accounting entries against frozen accounts,Los usuarios con esta función pueden establecer cuentas congeladas y crear / modificar los asientos contables contra las cuentas congeladas,
Debit,Débito,
"e.g. Bank, Cash, Credit Card","por ejemplo Banco, Efectivo , Tarjeta de crédito"
Material Transferred for Manufacturing,Material transferido para fabricación,
Item Reorder,Reordenar productos,
Credit To account must be a Payable account,Crédito a la cuenta debe ser una cuenta por pagar,
Lead Id,Iniciativa ID,
Quotations received from Suppliers.,Cotizaciones recibidas de los proveedores.
Sales Partner Target,Socio de Ventas Objetivo,
Make Maintenance Visit,Hacer Visita de Mantenimiento,
Stock cannot be updated against Delivery Note {0},Inventario no puede actualizarse contra Nota de Envio {0}
Rent Cost,Renta Costo,
Issues,Problemas,
Current BOM,Lista de materiales actual,
Row # {0}:,Fila # {0}:
% Amount Billed,% Monto Facturado,
Manage cost of operations,Administrar el costo de las operaciones,
Company Email,Correo de la compañía,
Single unit of an Item.,Números de serie únicos para cada producto,
Delivery Notes {0} must be cancelled before cancelling this Sales Order,Nota de Entrega {0} debe ser cancelado antes de cancelar esta Orden Ventas,
Tax Rate,Tasa de Impuesto,
Utility Expenses,Los gastos de servicios públicos,
Parent Account,Cuenta Primaria,
Messages greater than 160 characters will be split into multiple messages,Los mensajes de más de 160 caracteres se dividirá en varios mensajes,
{0}: {1} not found in Invoice Details table,{0}: {1} no se encuentra en el detalle de la factura,
Leave blank if considered for all designations,Dejar en blanco si es considerada para todas las designaciones,
Sales Register,Registros de Ventas,
Account Head,Cuenta matriz,
Single,solo,
Send automatic emails to Contacts on Submitting transactions.,Enviar correos electrónicos automáticos a Contactos en transacciones SOMETER.
{0} is not a valid Batch Number for Item {1},{0} no es un número de lote válido para el producto {1}
"Cannot change company's default currency, because there are existing transactions. Transactions must be cancelled to change the default currency.","No se puede cambiar la moneda por defecto de la compañía, porque existen transacciones, estas deben ser canceladas para cambiar la moneda por defecto."
Default BOM ({0}) must be active for this item or its template,La lista de materiales por defecto ({0}) debe estar activa para este producto o plantilla,
Note: This Cost Center is a Group. Cannot make accounting entries against groups.,Nota: Este centro de costos es un grupo. No se pueden crear asientos contables en los grupos.
How frequently?,¿Con qué frecuencia ?
Invoice No,Factura No,
Bank A/C No.,Número de cuenta bancaria,
Customer's Purchase Order No,Nº de Pedido de Compra del Cliente,
Supplier Name,Nombre del Proveedor,
Hour Rate,Hora de Cambio,
Quantity of item obtained after manufacturing / repacking from given quantities of raw materials,Cantidad del punto obtenido después de la fabricación / reempaque de cantidades determinadas de materias primas,
Get Outstanding Invoices,Verifique Facturas Pendientes,
Shipping Address,Dirección de envío,
"Settings for online shopping cart such as shipping rules, price list etc.","Ajustes para la compra online, como las normas de envío, lista de precios, etc."
Series Updated,Series Actualizado,
Contract End Date,Fecha Fin de Contrato,
Excise Entry,Entrada Impuestos Especiales,
Opportunity,Oportunidades,
Salary Slip,Planilla,
Rate at which this tax is applied,Velocidad a la que se aplica este impuesto,
Supplier Id,Proveedor Id,
Support Analtyics,Analitico de Soporte,
Subcontract,Subcontrato,
From Lead,De la iniciativa,
Party,Socio,
Update Cost,Actualización de Costos,
Last Purchase Rate,Tasa de Cambio de la Última Compra,
Actual Quantity,Cantidad actual,
Stock Manager,Gerente,
Shipping Rule Condition,Regla Condición inicial,
Opening Balance Equity,Apertura de saldos de capital,
Stock Entry Detail,Detalle de la Entrada de Inventario,
'To Case No.' cannot be less than 'From Case No.','Hasta Caso No.' no puede ser inferior a 'Desde el Caso No.'
Health Details,Detalles de la Salud,
Unscheduled,No Programada,
Other Details,Otros Datos,
"Buying must be checked, if Applicable For is selected as {0}","Compra debe comprobarse, si se selecciona Aplicable Para como {0}"
Period Closing Entry,Entradas de cierre de período,
Cost of Purchased Items,El costo de artículos comprados,
Delete Company Transactions,Eliminar Transacciones de la empresa,
Stock UOM,Unidad de Media del Inventario,
Itemwise Recommended Reorder Level,Nivel recomendado de re-ordenamiento de producto,
Actual End Time,Hora actual de finalización,
Please mention Round Off Cost Center in Company,"Por favor, indique las centro de costos para el redondeo--"
Under Graduate,Bajo Graduación,
Purchase Receipt No,Recibo de Compra No,
Default Buying Price List,Lista de precios predeterminada,
Lead Time Date,Fecha y Hora de la Iniciativa,
Maintenance start date can not be before delivery date for Serial No {0},Mantenimiento fecha de inicio no puede ser antes de la fecha de entrega para la Serie No {0}
Suggestions,Sugerencias,
Warehouse where you are maintaining stock of rejected items,Almacén en el que está manteniendo un balance de los artículos rechazados,
Default Cost of Goods Sold Account,Cuenta de costos de venta por defecto,
"Create and manage daily, weekly and monthly email digests.","Creación y gestión de resúmenes de correo electrónico diarias , semanales y mensuales."
Sales Order to Payment,Órdenes de venta al Pago,
Default settings for selling transactions.,Los ajustes por defecto para las transacciones de venta.
Customize the Notification,Personalice la Notificación,
Make Difference Entry,Hacer Entrada de Diferencia,
Ordered Qty,Cantidad Pedida,
Total(Amt),Total (Amt)
Credit Card Entry,Introducción de tarjetas de crédito,
Applicable To (Designation),Aplicables a (Denominación )
Receivable,Cuenta por Cobrar,
Opportunity From field is mandatory,El campo 'Oportunidad de' es obligatorio,
-Above,-Mayor,
Office Maintenance Expenses,Gastos de Mantenimiento de Oficinas,
Manufacturing,Producción,
'Entries' cannot be empty,'Entradas' no puede estar vacío,
Percentage Allocation,Porcentaje de asignación de,
Shipping Amount,Importe del envío,
Item Code is mandatory because Item is not automatically numbered,El código del artículo es obligatorio porque el producto no se enumera automáticamente,
Sales Order Item,Articulo de la Solicitud de Venta,
Parent Sales Person,Contacto Principal de Ventas,
Warehouse Contact Info,Información de Contacto del Almacén,
Statutory info and other general information about your Supplier,Información legal y otra información general acerca de su proveedor,
Unit of Measure {0} has been entered more than once in Conversion Factor Table,Unidad de Medida {0} se ha introducido más de una vez en la Tabla de Factores de Conversión,
From Currency and To Currency cannot be same,'Desde Moneda' y 'A Moneda' no puede ser la misma,
Default settings for Shopping Cart,Ajustes por defecto para Compras,
Cost Center with existing transactions can not be converted to group,Centro de Costos de las transacciones existentes no se puede convertir al grupo,
Year Start Date,Fecha de Inicio,
Supplier Naming By,Ordenar proveedores por:
Sales Invoice Message,Mensaje de la Factura,
Notify by Email on creation of automatic Material Request,Notificarme por Email cuando se genere una nueva solicitud de materiales,
"Specify the operations, operating cost and give a unique Operation no to your operations.","Especifique la operación , el costo de operación y dar una operación única que no a sus operaciones."
Shopping Cart,Cesta de la compra,
Supplier,Proveedores,
Accounting Ledger,Libro Mayor Contable,
Stop Birthday Reminders,Detener recordatorios de cumpleaños,
Sales Expenses,Gastos de Ventas,
Warranty / AMC Details,Garantía / AMC Detalles,
No of Visits,No. de visitas,
Item Description,Descripción del Artículo,
Cost of Issued Items,Costo de Artículos Emitidas,
Stock Expenses,Inventario de Gastos,
Lead Time Days,Tiempo de Entrega en Días,
Tax Assets,Activos por Impuestos,
Schedules,Horarios,
Tax Amount After Discount Amount,Total de Impuestos Después Cantidad de Descuento,
Has Serial No,Tiene No de Serie,
Sales Order required for Item {0},Orden de Venta requerida para el punto {0}
Out of AMC,Fuera de AMC,
Delivery Note {0} is not submitted,Nota de Entrega {0} no está presentada,
"Row {0}: To set {1} periodicity, difference between from and to date \
						must be greater than or equal to {2}","Fila {0}: Para establecer {1} periodicidad, diferencia entre desde y hasta la fecha \
 debe ser mayor que o igual a {2}"
"Then Pricing Rules are filtered out based on Customer, Customer Group, Territory, Supplier, Supplier Type, Campaign, Sales Partner etc.","Luego las reglas de precios son filtradas en base a Cliente, Categoría de cliente, Territorio, Proveedor, Tipo de Proveedor, Campaña, Socio de Ventas, etc"
Enter name of campaign if source of enquiry is campaign,Introduzca el nombre de la campaña si el origen de la encuesta es una campaña,
Scrap %,Chatarra %
Upload your letter head and logo. (you can edit them later).,Carge su membrete y su logotipo. (Puede editarlos más tarde).
Is Purchase Item,Es una compra de productos,
Delivery Document No,Entrega del documento No,
Notification Control,Control de Notificación,
Administrative Officer,Oficial Administrativo,
Show In Website,Mostrar En Sitio Web,
Bank Overdraft Account,Cuenta de sobregiros,
Warning: Another {0} # {1} exists against stock entry {2},Existe otro {0} # {1} contra la entrada de población {2}: Advertencia,
'Update Stock' can not be checked because items are not delivered via {0},'Actualizar Stock' no se puede marcar porque los productos no se entregan a través de {0}
Holiday List,Lista de Feriados,
Settings for Selling Module,Ajustes para vender Módulo,
"e.g. ""Build tools for builders""","por ejemplo "" Herramientas para los Constructores """
Taxes and Charges Deducted,Impuestos y Gastos Deducidos,
Actual Time and Cost,Tiempo y costo actual,
HR User,Usuario Recursos Humanos,
Unpaid,No pagado,
All Sales Person,Todos Ventas de Ventas,
Material Request to Purchase Order,Requisición de materiales hacia la órden de compra,
Manage Sales Partners.,Administrar Puntos de venta.
Opening Entry,Entrada de Apertura,
Ordered,Ordenado,
Cost of Delivered Items,Costo del Material que se adjunta,
Default Unit of Measure,Unidad de Medida Predeterminada,
Credit To,Crédito Para,
To Currency,Para la moneda,
Unit of Measure,Unidad de Medida,
Material Issue,Incidencia de Material,
Material Requests for which Supplier Quotations are not created,Solicitudes de Productos sin Cotizaciones Creadas,
Weightage,Coeficiente de Ponderación,
"Example: ABCD.#####
If series is set and Serial No is not mentioned in transactions, then automatic serial number will be created based on this series. If you always want to explicitly mention Serial Nos for this item. leave this blank.","Ejemplo:. ABCD ##### 
 Si la serie se establece y Número de Serie no se menciona en las transacciones, entonces se creara un número de serie automático sobre la base de esta serie. Si siempre quiere mencionar explícitamente los números de serie para este artículo, déjelo en blanco."
Recd Quantity,Recd Cantidad,
New Account Name,Nombre de nueva cuenta,
Balance for Account {0} must always be {1},Balance de cuenta {0} debe ser siempre {1}
Supplier Warehouse,Almacén Proveedor,
Sales campaigns.,Campañas de Ventas.
Project Name,Nombre del proyecto,
Serial No Warranty Expiry,Número de orden de caducidad Garantía,
Manufacturing Manager,Gerente de Manufactura,
Item UOM,Unidad de Medida del Artículo,
Total Invoiced Amt,Total Monto Facturado,
Tax template for selling transactions.,Plantilla de Impuestos para las transacciones de venta.
Re-open,Re Abrir,
Material Request Type,Tipo de Solicitud de Material,
Serial No {0} not found,Serial No {0} no encontrado,
Rate at which Price list currency is converted to company's base currency,Grado en el que la lista de precios en moneda se convierte en la moneda base de la compañía,
Row {0}: Allocated amount {1} must be less than or equals to invoice outstanding amount {2},Fila {0}: cantidad asignada {1} debe ser menor o igual a cantidad pendiente a facturar {2}
Tax Amount After Discount Amount (Company Currency),Monto de impuestos Después Cantidad de Descuento (Compañía moneda)
Holiday List Name,Lista de nombres de vacaciones,
Sales Return,Volver Ventas,
Automotive,Automotor,
Payment Amount,Pago recibido,
Supplied Qty,Suministrado Cantidad,
Employee cannot report to himself.,Empleado no puede informar a sí mismo.
Delivery Note No,No. de Nota de Entrega,
Purchase Order,Órdenes de Compra,
POS Profile required to make POS Entry,Se requiere un perfil POS para crear entradas en el Punto-de-Venta,
Requested Items To Be Ordered,Solicitud de Productos Aprobados,
Root cannot be edited.,Root no se puede editar .
Source warehouse is mandatory for row {0},Almacén de origen es obligatoria para la fila {0}
Target Distribution,Distribución Objetivo,
Item Image (if not slideshow),"Imagen del Artículo (si no, presentación de diapositivas)"
Change the starting / current sequence number of an existing series.,Defina el número de secuencia nuevo para esta transacción,
Warehouse can only be changed via Stock Entry / Delivery Note / Purchase Receipt,Depósito sólo se puede cambiar a través de la Entrada de Almacén / Nota de Entrega / Recibo de Compra,
Quotation To,Cotización Para,
Select Fiscal Year,Seleccione el año fiscal,
'Has Serial No' can not be 'Yes' for non-stock item,"'Tiene Número de Serie' no puede ser ""Sí"" para elementos que son de inventario"
Cash In Hand,Efectivo Disponible,
Please specify currency in Company,"Por favor, especifique la moneda en la compañía"
Purchase Order Message,Mensaje de la Orden de Compra,
Only leaf nodes are allowed in transaction,Sólo las Cuentas de Detalle se permiten en una transacción,
Government,Gobierno,
Securities & Commodity Exchanges,Valores y Bolsas de Productos,
Items with higher weightage will be shown higher,Los productos con mayor peso se mostraran arriba,
Both Warehouse must belong to same Company,Ambos almacenes deben pertenecer a una misma empresa,
Row # {0}: Cannot return more than {1} for Item {2},Fila # {0}: No se puede devolver más de {1} para el artículo {2}
Supplier of Goods or Services.,Proveedor de Productos o Servicios.
Secretary,Secretario,
Lead must be set if Opportunity is made from Lead,La Iniciativa se debe establecer si la oportunidad está hecha desde Iniciativas,
Operation completed for how many finished goods?,La operación se realizó para la cantidad de productos terminados?
Type of document to rename.,Tipo de documento para cambiar el nombre.
"Accounting entry frozen up to this date, nobody can do / modify entry except role specified below.",Asiento contable congelado actualmente ; nadie puede modificar el asiento  excepto el rol que se especifica a continuación .
Duties and Taxes,Derechos e Impuestos,
Tree of Bill of Materials,Árbol de la lista de materiales,
Manufacturing User,Usuario de Manufactura,
Profit and Loss Statement,Estado de Pérdidas y Ganancias,
Item Supplier,Proveedor del Artículo,
Account {0}: Parent account {1} can not be a ledger,Cuenta {0}: Cuenta Padre {1} no puede ser una cuenta Mayor,
Cart is Empty,El carro esta vacío,
Please Delivery Note first,Primero la nota de entrega,
"To include tax in row {0} in Item rate, taxes in rows {1} must also be included",Para incluir el impuesto de la linea {0} los impuestos de las lineas {1} también deben ser incluidos,
Sales Invoice Advance,Factura Anticipadas,
Quantity for Item {0} must be less than {1},Cantidad de elemento {0} debe ser menor de {1}
Stock Value Difference,Diferencia de Valor de Inventario,
Min Order Qty,Cantidad mínima de Pedido (MOQ)
Website Warehouse,Almacén del Sitio Web,
Source and target warehouse cannot be same for row {0},Fuente y el almacén de destino no pueden ser la misma para la fila {0}
Specify conditions to calculate shipping amount,Especificar condiciones de calcular el importe de envío,
This is a root customer group and cannot be edited.,Este es una categoría de cliente raíz y no se puede editar.
Customer Items,Artículos de clientes,
Customer Naming By,Naming Cliente Por,
Fixed Asset,Activos Fijos,
Start date of current invoice's period,Fecha del período de facturación actual Inicie,
"To set this Fiscal Year as Default, click on 'Set as Default'","Para establecer este Año Fiscal como Predeterminado , haga clic en "" Establecer como Predeterminado """
Where manufacturing operations are carried.,¿Dónde se realizan las operaciones de fabricación.
Appraisal {0} created for Employee {1} in the given date range,Evaluación {0} creado por Empleado {1} en el rango de fechas determinado,
Employee Leave Approver,Supervisor de Vacaciones del Empleado,
Investment Banking,Banca de Inversión,
Unit,Unidad,
Stock Analytics,Análisis de existencias,
Leave blank if considered for all departments,Dejar en blanco si se considera para todos los departamentos,
Purchase Order Items To Be Billed,Ordenes de Compra por Facturar,
The selected item cannot have Batch,El elemento seleccionado no puede tener lotes,
Setting Account Type helps in selecting this Account in transactions.,Ajuste del tipo de cuenta le ayuda en la selección de esta cuenta en las transacciones.
User {0} is already assigned to Employee {1},El usuario {0} ya está asignado a Empleado {1}
Expenses Included In Valuation,Gastos dentro de la valoración,
New Customers,Clientes Nuevos,
Total Taxes and Charges (Company Currency),Total Impuestos y Cargos (Moneda Local)
Item {0}: Ordered qty {1} cannot be less than minimum order qty {2} (defined in Item).,El elemento {0}: Con la cantidad ordenada {1} no puede ser menor que el pedido mínimo {2} (definido en el producto).
A logical Warehouse against which stock entries are made.,Un almacén lógico por el cual se hacen las entradas de existencia.
Has Batch No,Tiene lote No,
Creation Document Type,Tipo de creación de documentos,
Prevdoc DocType,DocType Prevdoc,
Batch,Lotes de Producto,
The BOM which will be replaced,La Solicitud de Materiales que será sustituida,
Account with child nodes cannot be set as ledger,La Cuenta con subcuentas no puede convertirse en libro de diario.
Stock Projected Qty,Cantidad de Inventario Proyectada,
Updated via 'Time Log',Actualizado a través de 'Hora de Registro'
{0} against Bill {1} dated {2},{0} contra Factura {1} de fecha {2}
Your Products or Services,Sus productos o servicios,
{0} is mandatory. Maybe Currency Exchange record is not created for {1} to {2}.,{0} es obligatorio. Tal vez tipo de cambio no se ha creado para {1} en {2}.
To Time,Para Tiempo,
Terretory,Territorios,
"This will be appended to the Item Code of the variant. For example, if your abbreviation is ""SM"", and the item code is ""T-SHIRT"", the item code of the variant will be ""T-SHIRT-SM""","Esto se añade al Código del Artículo de la variante. Por ejemplo, si su abreviatura es ""SM"", y el código del artículo es ""CAMISETA"", el código de artículo de la variante será ""CAMISETA-SM"""
Wages,Salario,
Outstanding for {0} cannot be less than zero ({1}),Sobresaliente para {0} no puede ser menor que cero ({1} )
Stock balance in Batch {0} will become negative {1} for Item {2} at Warehouse {3},Balance de Inventario en Lote {0} se convertirá en negativa {1} para la partida {2} en Almacén {3}
Allow Production on Holidays,Permitir Producción en Vacaciones,
Terms,Términos,
Supplier(s),Proveedor (s)
Serial No Details,Serial No Detalles,
Allow user to edit Price List Rate in transactions,Permitir al usuario editar Precio de Lista  en las transacciones,
Serial Nos Required for Serialized Item {0},Serie n Necesario para artículo serializado {0}
"Show ""In Stock"" or ""Not in Stock"" based on stock available in this warehouse.","Mostrar ""en la acción "" o "" No disponible "", basada en stock disponible en este almacén."
Place of Issue,Lugar de emisión,
Purchase Order {0} is not submitted,La órden de compra {0} no existe,
Account {0} is invalid. Account Currency must be {1},La Cuenta {0} no es válida. La Moneda de la Cuenta debe de ser {1}
"If this item has variants, then it cannot be selected in sales orders etc.","Si este artículo tiene variantes, entonces no podrá ser seleccionado en los pedidos de venta, etc."
Sales Team1,Team1 Ventas,
Stock Entry {0} is not submitted,Entrada de la {0} no se presenta,
Support queries from customers.,Consultas de soporte de clientes .
Quotes to Leads or Customers.,Cotizaciones a Oportunidades o Clientes,
Consumed Amount,Cantidad Consumida,
Item Tax Row {0} must have account of type Tax or Income or Expense or Chargeable,"Campo de impuesto del producto {0} debe tener un tipo de cuenta de impuestos, ingresos, cargos o gastos"
Supplier Part Number,Número de pieza del proveedor,
'From Date' must be after 'To Date','Desde fecha' debe ser después de 'Hasta Fecha'
Account with child nodes cannot be converted to ledger,Cuenta con nodos hijos no se puede convertir a cuentas del libro mayor,
Serial No Service Contract Expiry,Número de orden de servicio Contrato de caducidad,
Supplier Warehouse mandatory for sub-contracted Purchase Receipt,Almacén de Proveedor es necesario para recibos de compras sub contratadas,
School/University,Escuela / Universidad,
Item {0} must be a Sub-contracted Item,El elemento {0} debe ser un producto sub-contratado,
Is Frozen,Está Inactivo,
Serial No {0} is under warranty upto {1},Número de orden {0} está en garantía hasta {1}
Global settings for all manufacturing processes.,Configuración global para todos los procesos de fabricación.
Actual type tax cannot be included in Item rate in row {0},"El tipo de impuesto actual, no puede ser incluido en el precio del producto de la linea {0}"
Role Allowed to edit frozen stock,Función Permitida para editar Inventario Congelado,
"Higher the number, higher the priority","Mayor es el número, mayor es la prioridad"
Stock cannot exist for Item {0} since has variants,Inventario no puede existir para el punto {0} ya tiene variantes,
Account {0} is frozen,Cuenta {0} está congelada,
Periodicity,Periodicidad,
Raw Materials cannot be blank.,Materias primas no pueden estar en blanco.
Date Of Retirement must be greater than Date of Joining,Fecha de la jubilación debe ser mayor que Fecha de acceso,
Employee Leave Balance,Balance de Vacaciones del Empleado,
Sales Person Name,Nombre del Vendedor,
Classification of Customers by region,Clasificación de los clientes por región,
Grand Total (Company Currency),Suma total (Moneda Local)
Quantity and Rate,Cantidad y Cambio,
Balance Qty,Can. en balance,
Materials Required (Exploded),Materiales necesarios ( despiece )
Source of Funds (Liabilities),Fuente de los fondos ( Pasivo )
Exploded_items,Vista detallada,
Sales Invoice {0} must be cancelled before cancelling this Sales Order,Factura {0} debe ser cancelado antes de cancelar esta Orden Ventas,
Is Opening,Es apertura,
Warehouse {0} does not exist,Almacén {0} no existe,
{0} is not a stock Item,{0} no es un producto de stock,
Due Date is mandatory,La fecha de vencimiento es obligatorio,
Sales Person-wise Transaction Summary,Resumen de Transacción por Vendedor,
Reorder Qty,Reordenar Cantidad,
Rate Of Materials Based On,Cambio de materiales basados en,
Purchase Receipt Items,Artículos de Recibo de Compra,
Out Qty,Salir Cant.
Contribution (%),Contribución (%)
Cost Center Name,Nombre Centro de Costo,
Material Request used to make this Stock Entry,Solicitud de Material utilizado para hacer esta Entrada de Inventario,
Year End Date,Año de Finalización,
Supplier Invoice Date,Fecha de la Factura de Proveedor,
This is a root item group and cannot be edited.,Se trata de un grupo de elementos raíz y no se puede editar .
Specified BOM {0} does not exist for Item {1},Solicitud de Materiales especificado {0} no existe la partida {1}
Sum of points for all goals should be 100. It is {0},Suma de puntos para todas las metas debe ser 100. Es {0}
Gross Weight UOM,Peso Bruto de la Unidad de Medida,
Territory Target Variance Item Group-Wise,Variación de Grupo por Territorio Objetivo,
Item to be manufactured or repacked,Artículo a fabricar o embalados de nuevo,
Supply Raw Materials,Suministro de Materias Primas,
Warehouse can not be deleted as stock ledger entry exists for this warehouse.,Almacén no se puede suprimir porque hay una entrada en registro de inventario para este almacén.
Current BOM and New BOM can not be same,Solicitud de Materiales actual y Nueva Solicitud de Materiales no pueden ser iguales,
Stock,Existencias,
Contribution %,Contribución %
Repack,Vuelva a embalar,
Support Analytics,Analitico de Soporte,
Average time taken by the supplier to deliver,Tiempo estimado por el proveedor para la recepción,
Apply On,Aplique En,
{0} against Sales Order {1},{0} contra orden de venta {1}
Manufactured Qty,Cantidad Fabricada,
Bill of Materials (BOM),Lista de Materiales (LdM)
General Ledger,Libro Mayor,
Serial No is mandatory for Item {0},No de serie es obligatoria para el elemento {0}
Set as Open,Establecer como abierto,
Required On,Requerido Por,
Gantt chart of all tasks.,Diagrama de Gantt de todas las tareas .
Material Request Item,Elemento de la Solicitud de Material,
Material Request of maximum {0} can be made for Item {1} against Sales Order {2},Solicitud de Materiales de máxima {0} se puede hacer para el punto {1} en contra de órdenes de venta {2}
Required only for sample item.,Sólo es necesario para el artículo de muestra .
Add/Remove Recipients,Añadir / Quitar Destinatarios,
Requested,Requerido,
Shipping Rule Conditions,Regla envío Condiciones,
Contribution Amount,Contribución Monto,
Item To Manufacture,Artículo Para Fabricación,
Quotation Message,Cotización Mensaje,
Stock Assets,Activos de Inventario,
Rate at which Customer Currency is converted to customer's base currency,Tasa a la cual la Moneda del Cliente se convierte a la moneda base del cliente,
Tax template for buying transactions.,Plantilla de impuestos para las transacciones de compra.
Taxes and Charges Deducted (Company Currency),Impuestos y Gastos Deducidos (Moneda Local)
Stock Reconciliation Item,Articulo de Reconciliación de Inventario,
Account {0}: Parent account {1} does not belong to company: {2},Cuenta {0}: Cuenta Padre {1} no pertenece a la compañía: {2}
Purchase / Manufacture Details,Detalles de Compra / Fábricas,
Debit To account must be a Receivable account,La cuenta para Débito debe ser una cuenta por cobrar,
Warehouse Detail,Detalle de almacenes,
Raise Material Request when stock reaches re-order level,Enviar solicitud de materiales cuando se alcance un nivel bajo el stock,
Maintenance Schedule Detail,Detalle de Calendario de Mantenimiento,
Item Group,Grupo de artículos,
Point-of-Sale,Punto de venta,
Rejected Serial No,Rechazado Serie No,
Search Sub Assemblies,Asambleas Buscar Sub,
Supplier Items,Artículos del Proveedor,
Contact Mobile No,No Móvil del Contacto,
Invoice Date,Fecha de la factura,
Date Of Retirement,Fecha de la jubilación,
Please set User ID field in an Employee record to set Employee Role,"Por favor, establece campo ID de usuario en un registro de empleado para establecer Función del Empleado"
Home Page is Products,Pagína de Inicio es Productos,
Round Off,Redondear,
Set as Lost,Establecer como Perdidos,
Sales Partners Commission,Comisiones de Ventas,
Sales Person Target Variance Item Group-Wise,Variación por Vendedor de Meta,
BOM {0} must be submitted,La lista de materiales (LdM) {0} debe ser enviada,
Please select BOM in BOM field for Item {0},"Por favor, seleccione la Solicitud de Materiales en el campo de Solicitud de Materiales para el punto {0}"
Rate at which supplier's currency is converted to company's base currency,Grado a la que la moneda de proveedor se convierte en la moneda base de la compañía,
Person Name,Nombre de la persona,
Batch number is mandatory for Item {0},Número de lote es obligatorio para el producto {0}
Account: {0} can only be updated via Stock Transactions,La cuenta: {0} sólo puede ser actualizada a través de transacciones de inventario,
Shortage Qty,Escasez Cantidad,
Cash Flow,Flujo de Caja,
Role that is allowed to submit transactions that exceed credit limits set.,Función que esta autorizada a presentar las transacciones que excedan los límites de crédito establecidos .
{0} valid serial nos for Item {1},{0} No. de serie válidos para el producto {1}
Default Stock UOM,Unidad de Medida Predeterminada para Inventario,
Project-wise data is not available for Quotation,El seguimiento preciso del proyecto no está disponible para la cotización--
Stock Settings,Ajustes de Inventarios,
Quotation Item,Cotización del artículo,
Date of Issue,Fecha de emisión,
Sales Invoice Item,Articulo de la Factura de Venta,
Customer {0} does not belong to project {1},Cliente {0} no pertenece a proyectar {1}
Against Sales Invoice Item,Contra la Factura de Venta de Artículos,
Accounting Details,detalles de la contabilidad,
Accounting journal entries.,Entradas en el diario de contabilidad.
Missing Currency Exchange Rates for {0},Falta de Tipo de Cambio de moneda para {0}
Capital Stock,Capital Social,
Employee Records to be created by,Registros de empleados a ser creados por,
Expense Account,Cuenta de gastos,
Maintenance Schedule {0} must be cancelled before cancelling this Sales Order,Programa de mantenimiento {0} debe ser cancelado antes de cancelar esta orden de venta,
Actual Qty After Transaction,Cantidad actual después de la transacción,
Either target qty or target amount is mandatory,Cualquiera Cantidad Meta o Monto Meta es obligatoria,
Applicable To (Role),Aplicable a (Rol )
Amount (Company Currency),Importe (Moneda Local)
Gantt Chart,Diagrama de Gantt,
Warning: Material Requested Qty is less than Minimum Order Qty,Advertencia: Cantidad de Material Solicitado es menor que Cantidad Mínima Establecida,
Plan time logs outside Workstation Working Hours.,Planear bitácora de trabajo para las horas fuera de la estación.
"Here you can maintain height, weight, allergies, medical concerns etc","Aquí usted puede mantener la altura , el peso, alergias , problemas médicos , etc"
Against Journal Entry {0} does not have any unmatched {1} entry,Contra la Entrada de Diario {0} no tiene ninguna {1} entrada que vincular,
Row #{0}: Rejected Qty can not be entered in Purchase Return,Fila # {0}: Rechazado Cantidad no se puede introducir en la Compra de Retorno,
Enable / disable currencies.,Habilitar / Deshabilitar el tipo de monedas,
Material Transfer for Manufacture,Trasferencia de Material para Manufactura,
"To merge, following properties must be same for both items","Para combinar, la siguientes propiedades deben ser las mismas para ambos artículos"
Serial No {0} is under maintenance contract upto {1},Número de orden {0} tiene un contrato de mantenimiento hasta {1}
Please pull items from Delivery Note,"Por favor, extraiga los productos desde la nota de entrega--"
Fetch exploded BOM (including sub-assemblies),Mezclar Solicitud de Materiales (incluyendo subconjuntos )
Auto Material Request,Solicitud de Materiales Automatica,
Get Items from BOM,Obtener elementos de la Solicitud de Materiales,
Customer Addresses And Contacts,Las direcciones de clientes y contactos,
Account {0}: You can not assign itself as parent account,Cuenta {0}: no puede asignar la misma cuenta como su cuenta Padre.
Item Price,Precios de Productos,
Leave blank if considered for all branches,Dejar en blanco si se considera para todas las ramas,
To Bill,A Facturar,
Production Plan Sales Order,Plan de producción de la orden de ventas (OV)
Return,Retorno,
Please enter default currency in Company Master,"Por favor, ingrese la moneda por defecto en la compañía principal"
Middle Income,Ingresos Medio,
Sales Invoice {0} has already been submitted,Factura {0} ya se ha presentado,
Year of Passing,Año de Fallecimiento,
Rate at which customer's currency is converted to company's base currency,Tasa a la cual la Moneda del Cliente se convierte a la moneda base de la compañía,
Manufacturing Quantity is mandatory,Cantidad de Fabricación es obligatoria,
AMC Expiry Date,AMC Fecha de caducidad,
Row {0}: Party Type and Party is required for Receivable / Payable account {1},Fila {0}: el tipo de entidad se requiere para las cuentas por cobrar/pagar {1}
Total Billing Amount,Monto total de facturación,
Branch,Rama,
Pension Funds,Fondos de Pensiones,
example: Next Day Shipping,ejemplo : Envío Día Siguiente,
Actual Operating Cost,Costo de operación actual,
Cannot convert Cost Center to ledger as it has child nodes,"No se puede convertir de 'Centros de Costos' a una cuenta del libro mayor, ya que tiene cuentas secundarias"
Telephone Expenses,Gastos por Servicios Telefónicos,
Percentage Allocation should be equal to 100%,Porcentaje de asignación debe ser igual al 100 %
Against Journal Entry {0} is already adjusted against some other voucher,Contra la Entrada de Diario entrada {0} ya se ajusta contra algún otro comprobante,
Holiday,Feriado,
Completed Qty,Cant. Completada,
Net Pay (in words) will be visible once you save the Salary Slip.,Pago neto (en palabras) será visible una vez que guarde la nómina.
POS Profile,Perfiles POS,
Rules for adding shipping costs.,Reglas para la adición de los gastos de envío .
Item Code required at Row No {0},Código del producto requerido en la fila No. {0}
No of Requested SMS,No. de SMS solicitados,
Nos,Números,
Short biography for website and other publications.,Breve biografía de la página web y otras publicaciones.
Sales Browser,Navegador de Ventas,
Warehouse {0} does not belong to company {1},Almacén {0} no pertenece a la empresa {1}
The Item {0} cannot have Batch,El artículo {0} no puede tener lotes,
Users who can approve a specific employee's leave applications,Los usuarios que pueden aprobar las solicitudes de licencia de un empleado específico,
For Quantity (Manufactured Qty) is mandatory,Por Cantidad (Cantidad fabricada) es obligatorio,
cannot be greater than 100,No puede ser mayor que 100,
Customer Feedback,Comentarios del cliente,
Required Qty,Cant. Necesaria,
Delivery Note,Notas de Entrega,
Stock Value,Valor de Inventario,
In Words (Company Currency),En palabras (Moneda Local)
Website Item Group,Grupo de Artículos del Sitio Web,
Supply Raw Materials for Purchase,Materiales Suministro primas para la Compra,
Series Updated Successfully,Serie actualizado correctamente,
Opportunity Date,Oportunidad Fecha,
There was an error. One probable reason could be that you haven't saved the form. Please contact support@erpnext.com if the problem persists.,"Ha ocurrido un error . Una razón probable podría ser que usted no ha guardado el formulario. Por favor, póngase en contacto con support@erpnext.com si el problema persiste."
Max discount allowed for item: {0} is {1}%,Descuento máximo permitido para cada elemento: {0} es {1}%
POS,POS,
End Date can not be less than Start Date,Fecha Final no puede ser inferior a Fecha de Inicio,
Contact HTML,HTML del Contacto,
Calculate Based On,Calcular basado en,
Qty To Manufacture,Cantidad Para Fabricación,
Basic Rate (Company Currency),Precio Base (Moneda Local)
Total Outstanding Amt,Monto Total Soprepasado,
Outstanding Amt,Monto Sobrepasado,
Row {0}: Credit entry can not be linked with a {1},Fila {0}: Crédito no puede vincularse con {1}
Credit Card,Tarjeta de Crédito,
Accounting entries have already been made in currency {0} for company {1}. Please select a receivable or payable account with currency {0}.,Partidas contables ya han sido realizadas en {0} para la empresa {1}. Por favor seleccione una cuenta por cobrar o pagar con moneda {0}
Duplicate row {0} with same {1},Duplicar fila {0} con el mismo {1}
For Supplier,Por proveedor,
Visit report for maintenance call.,Informe de visita por llamada de mantenimiento .
Manage Sales Person Tree.,Vista en árbol para la administración de las categoría de vendedores,
New Serial No cannot have Warehouse. Warehouse must be set by Stock Entry or Purchase Receipt,El numero de serie no tiene almacén. el almacén debe establecerse por entradas de stock o recibos de compra,
Overlapping conditions found between:,Condiciones coincidentes encontradas entre :
Please specify a valid 'From Case No.',"Por favor, especifique 'Desde el caso No.' válido"
Item or Warehouse for row {0} does not match Material Request,Artículo o Bodega para la fila {0} no coincide Solicitud de material,
'Total','Total'
Debtors,Deudores,
Set Item Group-wise budgets on this Territory. You can also include seasonality by setting the Distribution.,Establecer presupuestos - Grupo sabio artículo en este Territorio. También puede incluir la estacionalidad mediante el establecimiento de la Distribución .
For reference,Por referencia,
All Sales Transactions can be tagged against multiple **Sales Persons** so that you can set and monitor targets.,Todas las transacciones de venta se pueden etiquetar contra múltiples **vendedores ** para que pueda establecer y monitorear metas.
Make Salary Slip,Hacer Nómina,
Rounded Total (Company Currency),Total redondeado (Moneda local)
Default BOM,Solicitud de Materiales por Defecto,
Delivery Note Trends,Tendencia de Notas de Entrega,
Serial No {0} has already been received,Número de orden {0} ya se ha recibido,
{0} entered twice in Item Tax,{0} ingresado dos veces en el Impuesto del producto,
Project master.,Proyecto maestro,
"There can only be one Shipping Rule Condition with 0 or blank value for ""To Value""","Sólo puede haber una Condición de Regla de Envió  con valor 0 o valor en blanco para ""To Value"""
Item Group Name,Nombre del grupo de artículos,
On Net Total,En Total Neto,
Root Type,Tipo Root,
Reference No & Reference Date is required for {0},Se requiere de No de Referencia y Fecha de Referencia para {0}
Please enter relieving date.,"Por favor, introduzca la fecha de recepción."
Gross Profit,Utilidad bruta,
Warehouse not found in the system,Almacén no se encuentra en el sistema,
Serial No Status,Número de orden Estado,
Ordered Quantity,Cantidad Pedida,
UOMs,Unidades de Medida,
Price List Rate (Company Currency),Tarifa de la lista de precios (Moneda Local)
Distribution Name,Nombre del Distribución,
Sales Order,Ordenes de Venta,
Weight UOM,Peso Unidad de Medida,
Work-in-Progress Warehouse is required before Submit,Se requiere un Almacen de Trabajo en Proceso antes de Enviar,
Get Sales Orders,Recibe Órdenes de Venta,
Serial No {0} quantity {1} cannot be a fraction,Número de orden {0} {1} cantidad no puede ser una fracción,
Applicable Holiday List,Lista de Días Feriados Aplicable,
Successfully Reconciled,Reconciliado con éxito,
Select Employees,Seleccione Empleados,
Stock transactions before {0} are frozen,Operaciones de Inventario antes de {0} se congelan,
Net Rate (Company Currency),Tasa neta (Moneda Local)
Closing Account Head,Cuenta de cierre principal,
Days Since Last Order,Días desde el último pedido,
Default Buying Cost Center,Centro de Costos Por Defecto,
Maintenance Visit {0} must be cancelled before cancelling this Sales Order,Visita de Mantenimiento {0} debe ser cancelado antes de cancelar la Orden de Ventas,
"Attach .csv file with two columns, one for the old name and one for the new name","Adjuntar archivo .csv con dos columnas, una para el nombre antiguo y otro para el nombre nuevo"
Schedule Date,Horario Fecha,
UOM Name,Nombre Unidad de Medida,
Target warehouse is mandatory for row {0},Almacenes de destino es obligatorio para la fila {0}
Get Items From Purchase Receipts,Obtener los elementos desde Recibos de Compra,
Serial Number Series,Número de Serie Serie,
Product Bundle Help,Ayuda del conjunto/paquete de productos,
Specify Exchange Rate to convert one currency into another,Especificar Tipo de Cambio para convertir una moneda en otra,
Make ,Hacer,
You can also copy-paste this link in your browser,También puede copiar y pegar este enlace en su navegador,
