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

DESCRIPCIONALINEACIONANCHO

FAMILIA_DESC

FAMILIALeft120

PRODUCTO_DESC

PRODUCTOLeft320

CODIGO

CODIGO INTERNOLeft70
PRECIOPRECIO PRODUCTOLeft70

txtCodigoProducto

CODIGO PRODUCTOLeft90

txtDescripcionProducto

DESCRIPCION PRODUCTOLeft100

lstDomicilioenvioProducto

DOMICILIO ENVIOLeft100

intCantidadProducto

CANTIDADLeft80

txtSubTotalProducto

SUBTOTALLeft80


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

DESCRIPCIONALINEACIONANCHO
CODIGOCĆ³digoLeft70
IDPRODUCTOID ProductoLeft70
PRECIOPrecioLeft70
PRODUCTO_DESCDescripciĆ³nLeft320