Cree la pantalla de gestiĆ³n Productos
Cree la pantalla de gestiĆ³n Productos
La siguiente pantalla a crear serĆ” Productos, esta pantalla, al igual que domicilios, aparecerĆ” como una pestaƱa dentro de la sub-pantalla GESTION DEFAULT (punto comprendido dentro del curso "Tu primer CRM"). El objetivo de este ejercicio es comprender cĆ³mo utilizar la entidad de producto en las gestiones. Esta pantalla nos darĆ” como resultado una grilla donde se darĆ”n de alta los pedidos de productos comercializados asociĆ”ndolo a una gestiĆ³n de contacto. TambiĆ©n aprenderemos a vincularlo con la entidad que maneja stock de sucursales (ENTIDAD_2).
Comencemos
Ingresar al punto de menĆŗ "ConfiguraciĆ³n CRM > Pantallas & Grillas > Pantallas", posicionarse sobre el registro "GestiĆ³n Default" , presionar el botĆ³n "Subpantalla" y agregar un nuevo registro
Se abrirĆ” un pop-up solicitando la descripciĆ³n, Tipo y Perfiles. Completar con la siguiente informaciĆ³n:
- DescripciĆ³n: PRODUCTO
- Tipo: Productos
- Perfiles: Seleccionar todos
Posicionarse sobre el registro " PRODUCTO" y presionar el botĆ³n "DiseƱo". Cuando se abra una pantalla pop-up seleccionar "Editar diseƱo de pantallaā y presionar aceptar.
Ampliar el marco de trabajo de la misma manera que como se ha explicado en la creaciĆ³n de pantalla "DOMICILIOS".
Agregar los siguientes controles a la pantalla, agregar etiquetas (label) para poner el nombre del campo y ubicarlas al costado de cada control y ordenarlos. Finalmente presionar guardar.
DATOS | Alcance |
---|---|
Domicilio envio Producto | PRODUCTO |
Cantidad Producto | PRODUCTO |
Codigo Producto | PRODUCTO |
SubTotal Producto | PRODUCTO |
Finalizada la carga, nos quedarĆ” una pantalla como se puede apreciar.
Ahora, sin salir de la pantalla, Para agregar una grilla deberĆ”, dentro del panel superior presionar āGridā (PASO 1) y luego clickear en la pantalla (PASO 2). Ubicar la grilla en la posiciĆ³n deseada. Luego presionar el botĆ³n āColumnasā posicionado sobre el panel derecho (PASO 3) y completar con los siguientes valores otorgados a continuaciĆ³n.
Nombre Columna | DescripciĆ³n | AlineaciĆ³n | Ancho |
---|---|---|---|
CODIGOSUCURSAL | CĆ³digo Sucursal | Left | 90 |
DESCRIPCION | DescripciĆ³n | Left | 160 |
DIRECCION | DirecciĆ³n | Left | 240 |
STOCK | Stock | Left | 90 |
Dentro del panel derecho, donde indica Id, cambiar el nombre por "grdGrillaSucProd". Esto se utiliza para utilizar nomenclaturas fƔciles, y luego al momento de referenciarlo tenerlo mƔs presente.
Sin cerrar el editor de pantallas, ingresar por medio del menĆŗ laterla izquierdo a "ConfiguraciĆ³n CRM - Operaciones & Reportes - Datasource" y crear el siguiente SP:
--DESCRIPCIĆN: CODIGOPRODUCTO--
--SELECT QUE ME TRAE SUCURSAL, DESCRIPCION, DIRECCION Y CANTIDAD DE UNIDADES EN STOCK PARA EL PRODUCTO INDICADO (IDPRODUCTO)--
(@CODIGOPRODUCTO varchar(10))
AS
select a.TXTCODIGOSUCURSALENT2 as 'CODIGOSUCURSAL',
p.DESCRIPCION as 'DESCRIPCION',
a.TXTDIRECCIONENT2 as 'DIRECCION',
a.INTSTOCKPRODUCTOENT2 as 'STOCK'
from TABLA_2 a(nolock)
inner join dbo.PRODUCTOS p(nolock)
on p.CODIGO = a.TXTCODIGOPRODUCTOENT2
where a.TXTCODIGOPRODUCTOENT2 = @CODIGOPRODUCTO
and a.INTSTOCKPRODUCTOENT2 >= 1
--go
Al aceptar la carga del proceso, recordar el ID de registro.
Volver al diseƱador de pantalla, presionar el marco y luego abrir el "On PoupLoad", (reemplazar XXXX por el ID del Datasource creado):
Ingresar el cĆ³digo JavaScript
/* CARGA GRILLA PRODUCTO- CAPTURAMOS EL CĆDIGO DEL PRODUTO DESDE EL REGISTRO ACTIVO DE LA GRILLA Y EJECUTAMOS EL STORE*/
var CODIGOPRODUCTO = pantalla.findControl("dgdPRODUCTOS").getActiveRow().getValue("CODIGO");
var SP = ExecuteDataTable("__XXXX",CODIGOPRODUCTO)
pantalla.findControl("grdGrillaSucProd").fill(SP);
Llenar campo Domicilio Envio producto, que son los TIPOS de domicilios creados asociados a la persona. Para esto nos debemos posicionar en el marco y luego presionar "On PoupLoad", e ingresar el siguiente JavaScript:
/* CONSIGO LOS TIPOS DE DOMICILIOS CARGADOS PARA EL USUARIO. DEBIDO A QUE LOS REGISTROS CARGADOS EN ESTA GESTION NO SE ENCUENTRA IMPACTADO EN BBDD (HASTA NO PRESIONAR ACEPTAR) DEBEREMOS BARRER LA GRILLA DETALLE1 CAPTURANDO TODOS LOS ROW Y SU CORRESPONDIENTE TIPODIRECCION */
var COUNT = pantalla.findControl("dgdDETALLE_1").Rows.count();
debugger;
for ( i = 0 ; i < COUNT ; i ++ )
{
var tipodireccion = pantalla.findControl("dgdDETALLE_1").Rows.getRow(i).getValue("txtTipoDet1");
pantalla.findControl("lstDomicilioenvioProducto").setNewOption(tipodireccion);
}
Llenar campo CĆ³digo Producto con el cĆ³digo del registro seleccionado. Para esto nos debemos posicionar en el marco y luego presionar "On PoupLoad", e ingresar el siguiente JavaScript:
/*CODIGO PRODUCTO - RECARGA DE CAMPO*/
pantalla.findControl("txtCodigoProducto").setValue(CODIGOPRODUCTO);
Llenar campo Sub-total producto, que es el resultado de la cantidad de productos por el producto seleccionado. Para esto nos debemos agregar un botĆ³n con la leyenda "Calcular" posicionar en el y luego presionar "On Click", e ingresar el siguiente JavaScript:
/* CONSIGO LOS VALORES DE LAS CANTIDADES DE PRODUCTOS SOLICITADOS Y EL PRECIO DE ESTE */
var CANT = pantalla.findControl("intCantidadProducto").getValue();
var TOTAL = pantalla.findControl("dgdPRODUCTOS").getActiveRow().getValue("PRECIO");
/* MULTIPLICO LAS VARIABLES PARA CALCULAR EL SUB-TOTAL DEL PRODUCTO */
pantalla.findControl("txtSubTotalProducto").setValue(TOTAL * CANT);
Actualizo el stock dentro de la tabla entidad 2. Para ello agregarĆ© un datasource (dentro de "ConfiguraciĆ³n CRM - Operaciones & Reportes - Datasource") que luego serĆ” instanciado desde la pantalla por medio de JavaScript. Es importante recordar el nĆŗmero de Store para reutilizarlo mĆ”s adelante, cuando se lo deba llamar.
--ACTUALIZOSTOCK--
(@CANT int, @CODPRODUCTO varchar(40),@CODSUC varchar(50))
AS
update TABLA_2 set intStockProductoEnt2 = intStockProductoEnt2 - @CANT
where txtCodigoSucursalEnt2 = @CODSUC
and txtCodigoProductoEnt2 = @CODPRODUCTO
Agrego validaciĆ³n para que cuando se acepte esta operaciĆ³n consulte si existe stock de productos en la sucursal designada y tambiĆ©n se actualicen los Stock restĆ”ndole la cantidad solicitada (Recordar que este es un ejemplo en Demo para aprender a utilizar todas las funcionalidades). Para esto, nos debemos posicionar sobre el marco de la pantalla y presionar el botĆ³n "On PoupUnLoad" ubicado en el panel izquierdo. Luego ingresar el siguiente JavaScript:
/* RESCATO LA SUCURSAL SELECCIONADA EN LA GRILLA, EL CODIGO DE PRODUCTO Y LA SUCURSAL */
var SUC = pantalla.findControl("grdGrillaSucProd").hasActiveRow();
var CODPRODUCTO = pantalla.findControl("dgdPRODUCTOS").getActiveRow().getValue("CODIGO");
var CODSUC = pantalla.findControl("grdGrillaSucProd").getActiveRow().getValue("CODIGOSUCURSAL");
/* CONSULTO SI HAY ALGUN REGISTRO DE LA GRILLA SELECCIONADA */
if (SUC == true)
{
/* CONSIGO EL STOCK DE LA GRILLA, LA CANTIDAD DE PRODUCTOS SOLICITADOS Y EL PRECIO DE ESTOS */
var STOCK = pantalla.findControl("grdGrillaSucProd").getActiveRow().getValue("STOCK");
var CANT = pantalla.findControl("intCantidadProducto").getValue();
var TOTAL = pantalla.findControl("dgdPRODUCTOS").getActiveRow().getValue("PRECIO");
/* MULTIPLICO LA CANTIDAD POR PRECIO PARA CONSEGUIR EL SUB-TOTAL */
pantalla.findControl("txtSubTotalProducto").setValue(TOTAL * CANT);
/* SI EL STOCK ES MENOR QUE LA CANTIDAD SOLICITADA, ME ARROJA UNA ALERTA */
if (parseInt(STOCK) < parseInt(CANT))
{
alert("El stock disponible en la sucursal es inferior al que se esta intentando vender.");
return false;
}else
/* EJECUTO EL STORE PREVIAMENTE GENERADO PARA ACTUALIZAR EL STOCK EN LA ENTIDAD DE SUCURSALES */
{
ExecuteScalar("__XXXX",CANT,CODPRODUCTO,CODSUC);
}
}else
{
/* SI NO SE SELECCIONA UNA SUCURSAL, ME ARROJA UNA ALERTA */
alert("Debe seleccionar la sucursal en la que se retirara el equipo.");
return false;
}
Guardar la pantalla editada, volver a posicionarse sobre el registro " PRODUCTO" y presionar DiseƱo. Cuando se abra una pantalla pop-up seleccionar "Editar diseƱo de grilla" y presionar aceptar.
Agregar los controles y asociarles una descripciĆ³n. Este paso permitirĆ” editar la grilla que se verĆ” dentro de la pestaƱa de gestiĆ³n Finalmente presionar salir.
NOMBRE COLUMNA | DESCRIPCION | ALINEACION | ANCHO |
---|---|---|---|
FAMILIA_DESC | FAMILIA | Left | 120 |
PRODUCTO_DESC | PRODUCTO | Left | 320 |
CODIGO | CODIGO INTERNO | Left | 70 |
PRECIO | PRECIO PRODUCTO | Left | 70 |
txtCodigoProducto | CODIGO PRODUCTO | Left | 90 |
txtDescripcionProducto | DESCRIPCION PRODUCTO | Left | 100 |
lstDomicilioenvioProducto | DOMICILIO ENVIO | Left | 100 |
intCantidadProducto | CANTIDAD | Left | 80 |
txtSubTotalProducto | SUBTOTAL | Left | 80 |
Es importante comprender que los registros COGIDO y PRECIO esten dentro de las grillas y con sus respectivos valores, siendo qeu al consultar por JS en ciertos procesos dados de alta, si no fueron cargados no conseguira la columna para hacerse del valor.
Guardar la grilla editada e ingresar a "ConfiguraciĆ³n CRM > Pantallas & Grillas > Grillas & Vistas > Grillas", posicionarse sobre el registro "Seleccion de productos a vender" y presionar el botĆ³n columnas. Agregar las siguientes columnas. Esto permitirĆ” editar la grilla pop-up cuando se agrega un producto. Es indispensable cargar en esta grilla tambien aquellos campos que serĆ”n consultados desde la grilla por medio de cĆ³digo JS.
NOMBRE COLUMNA | DESCRIPCION | ALINEACION | ANCHO |
---|---|---|---|
CODIGO | CĆ³digo | Left | 70 |
IDPRODUCTO | ID Producto | Left | 70 |
PRECIO | Precio | Left | 70 |
PRODUCTO_DESC | DescripciĆ³n | Left | 320 |