[[Category:MACRO]]
== Descripción ==
Valida la acción de ingresar un producto dentro de la aplicación.
== Biblioteca ==
*[[LIBR:FazzGlassMcr]]
== Composición ==
*[[TABLA:productos]]
*[[TABLA:precios]]
*[[TABLA:composicion]]

== Código ==
<small><pre>
function ChangeFieldtxtProductoIDFORMProductos (oEvent as Object) 

Dim oValor		as String
Dim oField		as Object

	oField		= oEvent.Source
	oValor		= UCASE(oField.Text)
	oField.setText(oValor)
	ChangeFieldtxtProductoIDFORMProductos = False
	if Left(oValor,2) = "DT" Then
		oMensaje		= "El código ingresado utiliza una cadena reservada por la sistema"
		MsgBox(SplitMsg(oMensaje,40),MB_OK+MB_ICONEXCLAMATION,"Atención!")
		oField.setText("        ")
		oField.Model.Parent.RefreshRow()
		oField.Model.Parent.getByName("ListaFiltrada").reset()
	else
		oCondicion	= "ProductoID="&chr(39)& oField.Text &chr(39)
		if QuerySimple("Count(*)","HayProductos","productos",oCondicion,"Integer") > 0 Then
			oMensaje		= "El código de producto ya existe como Producto"
			MsgBox(SplitMsg(oMensaje,40),MB_OK+MB_ICONEXCLAMATION,"Atención!")
		else
			if QuerySimple("Count(*)","HayComposiciones","composicion",oCondicion,"Integer") Then
				oMensaje		= "El código de producto ya existe como Componente"
				MsgBox(SplitMsg(oMensaje,40),MB_OK+MB_ICONEXCLAMATION,"Atención!")
			else
				if QuerySimple("Count(*)","HayPrecios","precios",oCondicion,"Integer") Then
					oMensaje		= "El código de producto existe y tiene precio asignado"
					MsgBox(SplitMsg(oMensaje,40),MB_OK+MB_ICONEXCLAMATION,"Atención!")
				else
					ChangeFieldtxtProductoIDFORMProductos = True
				end if
			end if
		end if
	end if
	if NOT(ChangeFieldtxtProductoIDFORMProductos) Then
		oField.setFocus()
	endif 
end function 
</pre></small>
== Bitácora ==
====Bitácora.20131109====
*Se agrega la validación de prefijos reservados para el sistema. Prefijo "DT".
*Se ajustan la gestión de mensajes y warnings.
== Uso ==
*[[FORM:Productos]]