Вы находитесь на странице: 1из 31

Taller: Incorporando Funcionalidad Adicional a

Profit Plus.

Profit Plus
ediciones small business, profesional y corporativa
La información de este documento está sujeta a modificaciones sin preaviso alguno. A menos que sea
especificado de otra manera, las compañías, nombres y datos utilizados en los ejemplos son ficticios.
Ninguna parte de este documento puede ser reproducida ni transmitida bajo forma alguna, ni por
cualquier medio, ya sea electrónico o mecánico, para ningún propósito, sin el consentimiento por
escrito de Softech Consultores.

 2000 – 2001 Softech Consultores. Todos los derechos reservados.

Profit Plus es una marca registrada de Softech Consultores C.A.

Microsoft, Windows, Windows 95, Windows 98, Windows 2000, Office, Word, Excel, NT Server,
Windows 2000 Server, NT Workstation, SQL Server, SQL Server 2000, Visual Foxpro y el logotipo
de Windows son marcas registradas de Microsoft Corporation.

Pentium es una marca registrada de Intel Corporation.

IBM es una marca registrada de International Business Machines Corporation.

Número de parte: PP-TALLER-FUN&ADI


Actualizado: 06/2010
Contenido iii

Contenido
Introducción
Introducción …………………................................................... 7
Pre-requisitos .………………..................................................... 8
Objetivos del taller .……………................................................ 9

Casos prácticos
Funcionalidad Adicional ............................................................ 13
Diseño de base de datos en Profit Plus ....................................... 17
Caso práctico # 1 ………………….…..................................... 19
Caso práctico # 2 ………………….…..................................... 20
Caso práctico # 3 ………………….…..................................... 21
Caso práctico # 4 ………………….…..................................... 22

Anexos
Nomenclatura Interna de las Pantallas ......................................... 25
Solución caso práctico # 1 .......................................................... 28
Solución caso práctico # 2 .......................................................... 29
Solución caso práctico # 3 .......................................................... 30
Solución caso práctico # 4 .......................................................... 31
Diccionario de datos de Profit Plus Administrativo ................... 32
Introducción

Introducción

 Nombre

 Empresa

 Cargo / Función

 Experiencia en Profit Plus

 Experiencia en Visual FoxPro y SQL

 Expectativas
12 Casos prácticos

Pre-requisitos

 Conocimientos funcionales de Profit Plus

 Diseño de la base de datos en Profit Plus

 Conocimientos medios de Programación

 Conocimientos medios de Visual FoxPro

 Conocimientos básicos del lenguaje S.Q.L.


Casos prácticos 13

Objetivos del taller

 Identificar “que” casos pueden ser manejados


mediante la funcionalidad adicional.

 Aprender a incorporar funcionalidad adicional


a Profit Plus (“como”).
14 Casos prácticos

Casos prácticos
Funcionalidad Adicional

Profit Plus le permite ejecutar validaciones, procesos y/o pantallas adicionales al sistema de
acuerdo a las necesidades que se planteen y las tareas que se deseen realizar. Esta
funcionalidad adicional es diseñada externamente sin afectar la actividad del sistema, además
puede ser ejecutado en todas las pantallas de tablas, documentos, así como también en la
ayuda y búsqueda asistida de artículos.

Para incorporar las validaciones, procesos y/o pantallas se debe tomar en consideración los
siguientes puntos:

1.- Las pantallas y procesos deben ser programados en Visual Fox Pro 9.0.
Los reportes en Visual Fox Pro 8.0.

2.- Se deberá crear una carpeta con el nombre del código de la empresa dentro de la carpeta
REPORADI, la cual se encuentra ubicada dentro de Profit. Esto solamente en el caso que la
ejecución de la funcionalidad sea para esa empresa.

3.- Las validaciones, procesos y/o pantallas pueden ser invocados automáticamente por
medio de la nomenclatura definida o manualmente a través de combinación de teclas.

4.- La nomenclatura a utilizar para definir los nombres de los procesos es la siguiente:

NombreInternoPantalla_PuntoRuptura

Donde:

NombreInternoPantalla: es el nombre que identifica la pantalla donde se ejecutará el proceso.


Los nombres de cada una de las pantallas se encontrarán establecidos en el archivo
PANTALLAS.TXT en la carpeta REPORADI.
14 Casos prácticos

PuntoRuptura: determinará el momento de ejecución del proceso. En el caso del proceso de


grabado y eliminación se puede establecer tres puntos de ruptura, los cuales se
encuentran definidos de la siguiente manera:
A continuación los procesos que se ejecutan en las pantallas del sistema:

Todas las Pantallas de la Suite Profit Pus

Grabar Eliminar Agregar Registro


Antes de: _SI _DI _AI
Durante: _S1 _D1
Durante (Antes
De Commit): _S2
Después de _SF _DF

Puntos de Ejecución en Transacción: S1 y S2 (Restricciones y Manejo de Errores)

Restricciones:
Para evitar transacciones “colgadas” en la base de datos no se debe incorporar en la
programación adicional de los puntos de ejecución S1 y S2, instrucciones que requieran una
interacción por parte del usuario, ejemplo:
x Messagebox x Entrada de Datos x Pantallas, etc.
Manejo de Errores:
El manejo de errores en estos puntos de ejecución, se encuentra operativo desde la revisión
de septiembre de 2015.

Procedimiento: Una vez identificada la excepción, se deberán asignar valores a las siguientes
propiedades de la pantalla
errornumreq: número de error, no se requiere un valor específico, queda a criterio del
programador el valor a asignar y debe ser mayor que cero.
errormsgreq: mensaje de error, no se requiere un valor específico, queda a criterio del
programador el valor a asignar y debe ser diferente de vacío.
retorno: establecida en falso (.F.) para detener el guardado.

Con estas propiedades asignadas, Profit es el encargado de emitir la excepción por pantalla, luego de
salir del punto de ejecución.
Casos prácticos 15

Ejemplo _s2:
16 Casos prácticos

Puntos de ejecución al iniciar la aplicación

 Estos puntos suelen utilizarse para la creación de tablas adicionales en el sistema.


 En ambos puntos de ejecución se tiene disponible el código de la empresa
seleccionada.
 Considere en el uso de estos puntos de interrupción la configuración de la empresa
referente a selección de empresa al entrar, la cual puede variar de un usuario a otro.

Al iniciar Profit y antes de que se establezca el bldatos como la base de START1


datos activa.
Al iniciar Profit y después de que se establece el bldatos como la base de START
datos activa.

Puntos de ejecución comunes a las pantallas del sistema

Iniciar pantalla _IT


Activar pantalla _AE
Desactivar pantalla _DE
Cerrar la pantalla _DY
Cambio de datos _DC
Solicitud de grabado _AS
Grabando datos _S2
Presionando la combinación de teclas ctrl. + H o alt. + F7 _P1
Presionando la combinación de teclas alt. + F8 _P2
Presionando la combinación de teclas alt. + F9 _P3
Al momento de evaluar si debe ser grabado el registro _WB
Presionando la tecla F8 _K1
Botón “Aceptar”, en todas las pantallas importación de documentos _I

PUNTO DE RUPTURA DE IMPORTACION DE DOCUMENTOS

Para realizar importaciones de documentos se debe tener en cuenta el documento a importar


para hacer funcionar el punto de interrupción correctamente, adicional a esto se debe agregar
al código de la pantalla un “1” adicional. Por ejemplo, en el caso de Cotizaciones a
Proveedores (CDP1) debe quedar de la siguiente manera (CDP11), anexo un ejemplo de lo
explicado

Al realizar una importación de Cotizaciones de Proveedores de la pantalla de Órdenes de


Compras (ODC1) se debe crear el siguiente punto de interrupción (CDP11_I) para que se
accione el punto de ejecución de la pantalla de importación de documentos al presionar el
botón de Aceptar.

PROFIT PLUS ADMINISTRATIVO

Todas las Pantallas del sistema:

Al presionar el botón “Información Contable” _INF


Al presionar el botón “Información Contable (Renglón)” _INF
Al presionar el botón “imprimir” en la barra de herramientas _IMP
Al realizar la búsqueda en la pantalla de búsqueda asistida _BI
Casos prácticos 17

Facturas \ Pedidos \ Cotizaciones \ Devoluciones \ Cotizaciones \ Notas de Entrega \ Notas


de Despacho Plantillas de Ventas \ Órdenes de Compras \ Notas de Recepción \ Plantillas:

Al salir del campo nombre del cliente _VCL


Al salir del campo código del cliente _CODCLV
Al salir del campo nombre del vendedor _DESVEV
Al salir del campo código del vendedor _CODVEV
Al salir del campo artículo _VART
Al salir del campo cantidad y unidad _LF1
Al salir del campo precio _LFP1
Presionando la tecla F5, en la columna de Artículos _K4
Presionando la tecla F6, en la columna de Artículos _K3
Presionando la tecla F7, en la columna de Artículos _K2
Al guardar la información de los campos adicionales _SIADI

Cobros a clientes \ Documentos \ Traslados entre almacenes \ Movimientos de Banco \


Movimientos de Caja Facturas \ Pedidos \ Cotizaciones \ Devoluciones \ Cotizaciones \
Notas de Entrega \ Notas de Despacho Plantillas de Ventas \ Órdenes de Compras \ Notas
de Recepción \ Plantillas \ Punto de Venta:

Al presionar el botón “Anular” y antes de anular el documento _ BA


Al presionar el botón “Anular” y después de anular el documento _BAF
Al moverse con el cursor por cualquier lugar del grid _CG
Al agregar un nuevo renglón _AR
Al eliminar un renglón _DR
Al realizar las validaciones _UR

Facturas \ Pedidos \ Cotizaciones \ Devoluciones \ Cotizaciones \ Notas de Entrega \ Notas


de Despach Plantillas de Ventas \ Órdenes de Compras \ Notas de Recepción \
Plantillas \ Cobros a Clientes \ Ajustes de Entrada y Salida \ Traslados entre
almacenes \ Ingresar Resultados Inventario Físico:

Presionando cualquier tecla en la columna de Artículos _KP1


Al pasar al siguiente renglón del detalle del documento _GP1
Al presionar el botón de limpiar el documento _PDI
Al validar antes de limpiar el documento _PDF
Al presionar el botón despachar y antes de despachar
_ADESP
Al presionar el botón despachar y después de despachar _DDESP
Al presionar el botón Aceptar y antes de generar cheque devuelto _GCHI
Al presionar el botón Aceptar y después de generar cheque devuelto _GCHF
Al activar la pantalla de Registro de Cliente _ICLI
Al presionar el botón Aceptar en Registro de Cliente _GCLI
Al presionar el botón Aceptar en la pantalla de seriales _AC
Al presionar el botón Restaurar y antes de restaurar el documento _AREST
Al presionar el botón Restaurar y después de restaurar el documento _DREST
Al presionar el botón Restaurar y antes de restaurar el cobro/pago _ARCOB
Al presionar el botón Aceptar en Generar giros y después de generarlos _SF

Facturas \ Pedidos \ Cotizaciones \ Devoluciones \ Cotizaciones \ Notas de Entrega \ Notas


de Despacho antillas de Ventas \ Órdenes de Compras \ Notas de Recepción \ Plantillas \
Cobros a Clientes \ Documentos:
18 Casos prácticos

Antes de realizar las validaciones necesarias para grabar el documento _SV

Cobros a Clientes \ Movimientos Bancarios \ Órdenes de Pago:

Al pasar al siguiente renglón del detalle formas de pago en el pago o cobro _CC

Cobros y Pagos

Presionando cualquier tecla en la columna de “Forma de Pago” _FP


Presionando una tecla en la columna de “Monto Abon.” _GP1
Al pulsar el botón “Documentos a Cancelar” _ADC
Al cambiar el monto a abonar _DAB
Al pulsar el botón “Aceptar” en la pantalla de Cobro Rápido _CR
Antes de realizar las validaciones necesarias para grabar el cobro/pago _SV1

Programación de Pagos

Luego de actualizar los saldos de las Cajas en las pestañas de:


Documentos de Cuentas por Pagar / Órdenes de Pago. _SCAJ

Pantalla que se activa al hacer clic en Detalle de Saldo en Caja


(Saldo en Cajas) _IT

Ajustes de Entrada y Salida:

Al salir del campo cantidad y unidad _LF1


Al presionar el botón “Anular” y antes de anular el documento _SA
Al presionar el botón “Anular” y después de anular el documento _SAF
Al presionar el botón “Anular” y antes de anular el documento _RA
Al presionar el botón “Anular” y después de anular el documento _RAF
Al estar en el último campo del grid _KP2

Preparar y Cerrar Inventario Físico:

Antes Después
Preparar _IC3 _IC4
Cerrar _IC2 _IC1
Anular _IC5 _IC6

Movimientos de Caja:

Al salir del campo “Código de caja” _CAJ


Al salir del campo “Forma de Pago” _CAJ1
Ordenes de Pago

Al presionar el botón “Reverso” _RI


Al presionar el botón “Cancelar” _CI

Punto de Venta

Proceso del botón Cerrar antes de Cerrar punto de venta _BCA


Proceso del botón Cerrar después de Cerrar punto de venta _BCD
Casos prácticos 19

Antes de mostrar la pantalla de Cobro _CI


Antes de mostrar la pantalla de Recuperar Factura _SEF

Pedidos/Cotizaciones a Clientes

Al presionar el botón “Facturar” y antes de generar el documento _BI1


Al presionar el botón “Facturar” y después de generar el documento _BF1

Conciliación Bancaria

Al presionar el botón “Conciliar Manual” _CONC


Al buscar los documentos conciliados/No Conciliados/Todos _RCON
Al presionar el botón Aceptar en la pantalla de importar archivo de conciliación _AC

5.- Adicionalmente existen pantallas adicionales que pueden ser ejecutadas en cualquier
ubicación del sistema si a las mismas se les coloca los siguientes nombres:

Con la combinación de teclas CTRL+F9 Gen_3


Con la combinación de teclas CTRL+F11 Gen_2
Con la combinación de teclas CTRL+F12 Gen_1

Pantalla de Lotes del Sitema :


En nombre de la pantalla es “LOTING” y el sufijo es “_IT”.

6.- Existen ciertas variables y propiedades que se encuentran disponibles en el momento de


ejecución de los procesos adicionales, entre ellas se encuentran:

Variables:

sucursal_act = Sucursal actual


sucursal_nom = Nombre sucursal Actual
usuario_actual = Usuario Actual
usuario_nombre = Nombre del Usuario
acceso_actual = Mapa asignado al usuario
t_prioridad1 = Prioridad del Usuario
tcod_emp = Código de la Empresa Actual
serversql = Indica si esta en sql o no

Propiedades:
.retorno = indica si un proceso externo falla
.dataenvironment.initialselectedalias = Tabla o vista principal
.tablasecundaria = Tabla o vista de los renglones
.documentotipo = Identifica el tipo de documento.
.lallowedits = Indica si el documento es edítable

12.- Para referirse a las propiedades de una pantalla estando en un programa se le debe
anteceder el prefijo _SCREEN.ACTIVEFORM y estando en una pantalla el nombre de la
variable que recibe el valor en el método INIT de la misma.
20 Casos prácticos
Casos prácticos 21

Diseño de base de datos en Profit Plus

Tablas Maestras

Tablas de Movimientos

La base de datos de Profit Plus se encuentra diseñada de la siguiente manera:

 Los datos del sistema se almacenan en tablas maestras y tablas de movimientos.

 Las tablas maestras son identificadas por nombres nemónicos a la información que
almacenan, y su clave principal formará parte de los campos indispensables de las tablas
de movimientos.
Ejemplo: Bancos, Clientes, Proveedores, etc.

 Las tablas de movimientos, son aquellas donde se almacenan los procesos manejados por
el sistema, estando caracterizadas por encabezados y renglones.
Ejemplo: Factura, reng_fact, Ajuste, reng_aju, etc.

 Las claves principales de las tablas maestras son identificadas con el prefijo de co,
seguido de una palabra identificativa de la tabla:
Ejemplo: Co_ban: para el código del banco

 Las descripciones de la tabla son identificadas con el prefijo des o la palabra descrip,
seguido de una palabra identificativa de la tabla.
Ejemplo: Des_ban: para la descripción del banco

 Las tablas que representan encabezados de documentos, como las de facturas, se


caracterizan por tener como clave principal un número cuyo campo se identifica por el
siguiente sufijo _num, que adicionalmente servirá de enlace entre el encabezado y los
renglones.
Ejemplo: Ajue_num: para los encabezados de ajuste

 Las tablas que representan renglones de documentos, como los renglones de factura, se
caracterizan por tener como clave principal una clave compuesta formada por la clave
22 Casos prácticos

principal del encabezado junto con el número de renglón, número cuyo campo se
identifica por reng_num.
Ejemplo: Ajue_num: campo del encabezado del ajuste
Reng_num: número del renglón del encabezado

 Existen ocho campos que identifican los campos adicionales de la tabla en cuestión,
identificados de la siguiente manera: campo1, campo2,..., campo8.

 En cada una de las tablas es almacenada la información del usuario y la fecha en que se
incluyó, modificó o eliminó un registro en la misma. Dichos campos son identificados de
la siguiente manera:
co_us_in, fe_us_in: código del usuario y la fecha y hora en que se incluyó el
registro en la tabla.
co_us_mo, fe_us_mo: código del usuario y la fecha y hora en que se modificó
el registro en la tabla.
co_us_el, fe_us_el: código del usuario y la fecha y hora en que se eliminó el
registro en la tabla.
Casos prácticos 23

Caso práctico # 1

 Validar que las facturas no se graben con


más de cinco renglones.

Programar una validación adicional en facturas tomando en cuenta que:

 La validación se realizará antes de grabar la factura.


 Si la factura posee más de cinco renglones se emitirá el siguiente mensaje: “La Factura
no puede tener más de cinco renglones” y no continuará el proceso de grabado de la
factura.
 El cursor del ratón se ubicará en la descripción de la factura cuando no se cumpla la
validación.
24 Casos prácticos

Caso práctico # 2

 Consulta “especial” de Clientes en la


pantalla de Pedidos

Elaborar una pantalla adicional tomando en cuenta que:

 La pantalla se activará a través de la combinación de teclas CTRL.+H.


 La pantalla deberá mostrar la siguiente información: límite y días de crédito, responsable
y teléfonos del cliente.
 Esta pantalla será mostrada solo si el usuario tiene prioridad 100, de lo contrario emitirá
el siguiente mensaje: “No tiene prioridad suficiente para consultar los datos del cliente”
 Se deberá validar que en la pantalla de pedidos se halla seleccionado un cliente.
Casos prácticos 25

Caso práctico # 3

 Asignar información adicional al momento


de ingresar los renglones de facturas.

Elaborar una pantalla adicional tomando en cuenta que:

 La pantalla se activará cuando se llegue al último campo del renglón de la factura.


 La pantalla deberá mostrar la siguiente información: descripción y cantidad adicional.
 Al salir de la pantalla la información cargada en la misma se colocará en el comentario
del renglón separado cada una por punto y coma.
 Esta pantalla se activará si y solo si en el campo adicional 1 del artículo que se está
ingresando en el renglón tiene una “X”.
26 Casos prácticos

Caso práctico # 4

 Proceso que al ingresar un cliente cree un


Proveedor con las mismas características.

Elaborar un proceso adicional para la pantalla de clientes, tomando en cuenta que:

 Antes de grabar el cliente se verificará que el código del Cliente no exista en la tabla
de Proveedores, sino se cumple la validación anterior se deberán emitir el siguiente
mensaje respectivamente: “El código del Cliente ya existe en la tabla de
Proveedores”.
 Antes de grabar el cliente se verificará que el campo tipo de cliente exista en la tabla
tipo de Proveedores, sino se cumple la validación anterior se deberán emitir el
siguiente mensaje respectivamente: “El tipo de cliente no existe en la tabla tipo de
Proveedores”.
 Se deberá pasar toda la información coincidente de la tabla de Clientes y la tabla de
Proveedores.
Casos prácticos 27

Anexos
Anexos 25

Nomenclatura Interna de las Pantallas

A continuación se nombran los nombres internos de cada una de las pantallas necesarias para
la programación de la Funcionalidad Adicional en Profit Plus Administrativo:

1.- Módulo de Inventario

Nombre de
la Pantalla Opción del Sistema
aju1 Ajustes de Entrada y Salida
tra1 Traslados entre Almacenes
res1 Ingresar Resultados: Inventario Físico
pcf Preparar y Cerrar Inventario Físico
gki1 Generar Compuestos
art1 Artículos
kit1 Artículos Compuestos
lin1 Líneas de Artículo
cat1 Categorías de Artículos
subl1 Sub-Líneas
pro2 Procedencias
col1 Colores
uni1 Unidades
sub1 Almacenes
taj1 Tipos de Ajuste
pro1 Proveedores
bus1 Búsqueda asistida
26 Anexos

2.- Módulo de Ventas y Cuentas x Cobrar

Nombre de
la Pantalla Opción del Sistema
fac1 Facturas de Venta
ped1 Pedidos
cdc1 Cotizaciones a Clientes
dvc1 Devoluciones de Clientes
nde1 Notas de Entrega
ndd1 Notas de Despacho
cc1 Documentos de Ventas
cob1 Cobros
cli1 Clientes
tip1 Tipos de Clientes
zon1 Zonas
seg1 Segmentos
ven1 Vendedores
sub1 Almacenes
alm1 Sucursales
con1 Condiciones de Pago
trn1 Transportes
tar1 Tarjetas de Crédito/Débito
cie1 Cuentas de Ingreso/Egreso
mon1 Monedas
gcl1 Registro de cliente
cor1 Cobro rápido
refac1 Recuperar factura
chdv1 Generar Cheque Devuelto
Gdg1 Generar giros
plv1 Plantillas de Ventas

3.- Módulo de Compras y Cuentas x Pagar

Nombre de Opción del Sistema


Anexos 27

la Pantalla
com1 Facturas de Compras
odc1 Órdenes de Compra
cdp1 Cotizaciones de Proveedores
dvp1 Devoluciones de Proveedores
ndr1 Notas de Recepción
cp1 Documentos de Compras
pag1 Pagos a Proveedores
pro1 Proveedores
tip2 Tipos de Proveedor
zon1 Zonas
seg1 Segmentos
con1 Condiciones de Pago
cie1 Cuentas de Ingreso/Egreso
imr1 Distribución de Costos
ipc1 Importaciones

4.- Cajas y Bancos:

Nombre de
la Pantalla Opción del Sistema
dpc Depósitos Bancarios
opa1 Órdenes de Pago
cue1 Cuentas Bancarias
caj1 Cajas
ban1 Bancos
ben1 Beneficiarios
cie1 Cuentas de Ingreso/Egreso
tar1 Tarjetas de Crédito/Débito
conc1 Conciliación Bancaria
28 Anexos

Solución Caso Práctico # 1

LOCAL pforma, lret, lalias, mren


pforma=_SCREEN.ACTIVEFORM
lret=.F.
lalias=ALIAS()
SELECT vreng_ped
COUNT FOR !DELETED() TO mren
IF mren > 5
=MESSAGEBOX("La factura no puede tener más de cinco renglones",48,business_loc)
ELSE
lret=.T.
ENDIF
SELECT &lalias
pforma.retorno=lret
pforma. pageframe1.page1.descrip1.setfocus()
Anexos 29

Solución Caso Práctico # 2

INIT

LPARAMETERS pPantalla
pforma = pPantalla
IF EMPTY(pforma.CO_CLI1.VALUE)
=MESSAGEBOX("Debe seleccionar un cliente para poder hacer la consulta.",64,business_loc)
RETURN .F.
ENDIF

IF T_PRIORIDAD1<100
=MESSAGEBOX(“No tiene prioridad suficiente para consultar los datos del
cliente”64,business_loc)
RETURN .F.
ENDIF

SELECT CLIENTES
LOCATE FOR CO_CLI=pforma.co_cli1.value

THISFORM.CO_CLI.VALUE=CLIENTES.CO_CLI
THISFORM.LIMITE.VALUE=CLIENTES.MONT_CRE
THISFORM.RESPONSABLE.VALUE=CLIENTES.RESPONS
THISFORM.TELEFONOS.VALUE=CLIENTES.TELEFONOS
30 Anexos

Solución Caso Práctico # 3

1.- Programa:

codigo=ALLTRIM(_SCREEN.ACTIVEFORM.pageframe1.page1.blgrid1.column2.text1.VALUE)

SELECT art.CAMPO1 FROM art ;


WHERE ALLTRIM(art.co_art) == ALLTRIM(codigo) ;
INTO CURSOR vreportes

IF ALLTRIM(vreportes.campo1)==’X’
oApp.DoForm('reporadi\'+ALLTRIM(tcod_emp)+"\avi_fac",_SCREEN.ACTIVEFORM)
ELSE
RETURN .F.
ENDIF

2.- Pantalla:

INIT

PARAMETERS pforma
THISFORM.formactual=pforma

KEYPRESS del Botón Aceptar

TABLA= THISFORM.FORMACTUAL.TABLASECUNDARIA
TABLA.COMENTARIO= THISFORM.DESCRIPCIÓN.VALUE + ”;” +
STR(THISFORM.CANTIDAD.VALUE)
THISFORM.RELEASE()
Anexos 31

Solución Caso Práctico # 4


1.- Proceso antes de Grabar el Cliente:

PUBLIC TLNUEVO
TLNUEVO = .F.
TCLIE = tclientes.co_cli
tseguir = .T.

IF !EMPTY(TCLIE)
SELECT co_prov FROM prov WHERE co_prov=TCLIE INTO CURSOR vtemp_cli
TLNUEVO=(GETFLDSTATE(1,'TCLIENTES') = 3 OR
GETFLDSTATE(1,'TCLIENTES')= 4)

IF ALLTRIM(vtemp_cli.co_prov) == ALLTRIM(TCLIE) AND TLNUEVO


= MESSAGEBOX('El Cliente ya existe',32,'PREGUNTA')
_SCREEN.ACTIVEFORM.retorno=.F.
ENDIF
ENDIF

SELECT TCLIENTES

2.- Proceso después de Grabar el cliente :

SET DELETED ON
SELECT tclientes
TCLIE = tclientes.co_cli
TCLIE_DES = tclientes.cli_DES
TCLIE_CONT = tclientes.contribu
tclie_com = tclientes.comentario
tclie_dir1 = tclientes.direc1
tclie_dir2 = tclientes.direc2

IF !EMPTY(TCLIE)
SELECT tclientes
SCATTER MEMVAR

SELECT PROV

IF SEEK(TCLIE,'PROV','CO_PROV')
GATHER MEMVAR
ELSE
INSERT INTO PROV FROM MEMVAR
ENDIF

REPLACE PROV.CO_PROV WITH TCLIE, PROV.PROV_DES WITH TCLIE_DES,


PROV.NACIONAL WITH TCLIE_CONT,PROV.comentario WITH TCLIE_com, PROV.direc1
WITH TCLIE_dir1,PROV.direc2 WITH TCLIE_dir2 IN PROV
32 Anexos

TABLEUPDATE(.T.)
ENDIF

Diccionario de datos
Av. Casanova, Edif. Banco Plaza, Piso PT Ofc. Planta Terraza,
Sector Sabana Grande, Caracas
Telfs: (0212) 762 99 92 / 0105 – MIPROFIT (0105-64776348)
VAL (0241) 826 83 43 – MER (0274) 262 88 94
www.softechsistemas.com
soporte@softechsistemas.com

Вам также может понравиться