Hola...
Code: Select all
MENU oMenu
MENUITEM aMenuItem[1] PROMPT "&Ventas"
MENU
MENUITEM aMenuItem[2] PROMPT "ABM de clientes"+CHR(9)+"CTRL+A";
RESOURCE "CLIEN16";
ACCELERATOR ACC_CONTROL,ASC("A");
MESSAGE "ABM de clientes CTRL+A";
ACTION BrowClientes(oBrush1,oWnd,Empresa,aMenuItem,oBtn1,2)
MENUITEM aMenuItem[3] PROMPT "Listados";
RESOURCE "LIST16";
MESSAGE "Listados de clientes"
MENU
MENUITEM aMenuItem[4] PROMPT "Clientes por código";
RESOURCE "LIST16";
MESSAGE "Clientes por código";
ACTION ListClientes(oBrush1,oWnd,Empresa,1,aMenuItem,4)
MENUITEM aMenuItem[5] PROMPT "Clientes por descripción";
RESOURCE "LIST16";
MESSAGE "Clientes por descripción";
ACTION ListClientes(oBrush1,oWnd,Empresa,2,aMenuItem,5)
MENUITEM aMenuItem[6] PROMPT "Clientes por domicilio";
RESOURCE "LIST16";
MESSAGE "Clientes por domicilio";
ACTION ListClientes(oBrush1,oWnd,Empresa,3,aMenuItem,6)
MENUITEM aMenuItem[7] PROMPT "Clientes por localidad";
RESOURCE "LIST16";
MESSAGE "Clientes por localidad";
ACTION ListClientes(oBrush1,oWnd,Empresa,4,aMenuItem,7)
MENUITEM aMenuItem[8] PROMPT "Clientes por teléfono";
RESOURCE "LIST16";
MESSAGE "Clientes por teléfono principal";
ACTION ListClientes(oBrush1,oWnd,Empresa,5,aMenuItem,8)
MENUITEM aMenuItem[9] PROMPT "Clientes por lista de precio";
RESOURCE "LIST16";
MESSAGE "Clientes por lista de precio";
ACTION ListClientes(oBrush1,oWnd,Empresa,6,aMenuItem,9)
ENDMENU
SEPARATOR
MENUITEM aMenuItem[10] PROMPT "Cuenta corriente";
RESOURCE "CUENTA16";
MESSAGE "Cuenta corriente de clientes"
MENU
MENUITEM aMenuItem[11] PROMPT "Facturación de pedidos";
RESOURCE "FACTU16";
MESSAGE "Facturación de pedidos por cuenta corriente";
ACTION FacturaCtaCte(oBrush1,oWnd,Empresa,aMenuItem,oBtn3,oBtn6,11,63)
MENUITEM aMenuItem[12] PROMPT "Nota de débito";
RESOURCE "FACTU16";
MESSAGE "Nota de débito";
ACTION NotaDebito(oBrush1,oWnd,Empresa,aMenuItem,12)
MENUITEM aMenuItem[13] PROMPT "Nota de crédito";
RESOURCE "FACTU16";
MESSAGE "Nota de crédito";
ACTION NotaCredito(oBrush1,oWnd,Empresa,aMenuItem,oBtn11,13)
MENUITEM aMenuItem[14] PROMPT "Ingreso de cobranzas";
RESOURCE "COBRO16";
MESSAGE "Emisión de recibos de cobranzas";
ACTION ReciboCobranza(oBrush1,oWnd,Empresa,aMenuItem,oBtn7,14)
SEPARATOR
MENUITEM aMenuItem[15] PROMPT "Anulación de comprobantes";
RESOURCE "DEPURA16";
MESSAGE "Anulación de comprobantes de venta";
ACTION Depura_Ventas(oBrush1,oWnd,Empresa,aMenuItem,oBtn10,15)
MENUITEM aMenuItem[16] PROMPT "Reimpresión de comprobantes";
RESOURCE "PRINT16";
MESSAGE "Reimpresión de comprobantes de venta";
ACTION RemprimeVentas(oBrush1,oWnd,Empresa,aMenuItem,oBtn8,16)
SEPARATOR
MENUITEM aMenuItem[17] PROMPT "Actualización de envases";
RESOURCE "VACIOS16";
MESSAGE "Actualización de envases";
ACTION ActualizaVacios(oBrush1,oWnd,Empresa,Datos,aMenuItem,oBtn9,17)
MENUITEM aMenuItem[18] PROMPT "Listado de envases por cliente";
RESOURCE "LIST16";
MESSAGE "Listado de envases";
ACTION ListEnvaces(oBrush1,oWnd,Empresa,aMenuItem,18)
SEPARATOR
MENUITEM aMenuItem[19] PROMPT "Listados de cuenta corriente";
RESOURCE "LIST16";
MESSAGE "Listados de cuenta corriente"
MENU
MENUITEM aMenuItem[20] PROMPT "Detalle de cuenta corriente";
RESOURCE "LIST16";
MESSAGE "Listado de cuenta corriente detallada";
ACTION ListCtaCli(oBrush1,oWnd,Empresa,aMenuItem,oBtn12,20)
MENUITEM aMenuItem[21] PROMPT "Listados de saldos por clientes";
RESOURCE "LIST16";
MESSAGE "Listado de saldos de clientes";
ACTION ListSaldosCli(oBrush1,oWnd,Empresa,aMenuItem,21)
ENDMENU
ENDMENU
SEPARATOR
MENUITEM aMenuItem[22] PROMPT "Precios Especiales";
RESOURCE "PRECIOS16";
MESSAGE "Precios especiales"
MENU
MENUITEM aMenuItem[23] PROMPT "Carga de precios especiales";
RESOURCE "PRECIOS16";
MESSAGE "Carga de precios especiales por cliente";
ACTION PrecioEspecial(oBrush1,oWnd,Empresa,aMenuItem,23)
MENUITEM aMenuItem[24] PROMPT "Clientes con precio especial";
RESOURCE "LIST16";
MESSAGE "Listado de clientes con precio especial";
ACTION ListCliEspecial(oBrush1,oWnd,Empresa,aMenuItem,24)
MENUITEM aMenuItem[25] PROMPT "Precios especiales por cliente";
RESOURCE "LIST16";
MESSAGE "Listado de precios especiales por cliente";
ACTION ListEspecialDet(oBrush1,oWnd,Empresa,aMenuItem,25)
ENDMENU
SEPARATOR
MENUITEM aMenuItem[26] PROMPT "Estadísticas";
RESOURCE "ESTA16";
MESSAGE "Estadísticas"
MENU
MENUITEM aMenuItem[27] PROMPT "Ventas por cliente y fecha";
RESOURCE "ESTA16";
MESSAGE "Listado de ventas por cliente y fecha";
ACTION LisVentasxCli(oBrush1,oWnd,Empresa,aMenuItem,27)
MENUITEM aMenuItem[28] PROMPT "Ventas por producto y fecha";
RESOURCE "ESTA16";
MESSAGE "Listado de ventas por producto y fecha";
ACTION LisVentasxProd(oBrush1,oWnd,Empresa,aMenuItem,28)
MENUITEM aMenuItem[29] PROMPT "Ventas por cliente, producto y fecha";
RESOURCE "ESTA16";
MESSAGE "Listado de ventas por cliente, producto y fecha";
ACTION LisVentasxCliyProd(oBrush1,oWnd,Empresa,aMenuItem,29)
ENDMENU
ENDMENU
oMenu:AddMdi()
ENDMENU
Luego en otro Array paralelo cargo valores lógicos para cada opción del menú. (.t. o .f.) según corresponda para ese usuario.
Espero te sirva la idea.
Saludos desde Argentina, Esteban.