Su IP: 18.97.9.170
Function SePuedeVender(Codigo,
Cantidad, Precio):
Esta función es llamada (si está definida) cada vez que una forma de
facturación de punto de ventas intenta agregar un renglon a una sesion.
Puede utilizarse para impedir la venta de productos inactivos, para limitar
la cantidad de unidades vendidas (practica normal en este pais de carestías
que se ha vuelto Venezuela) o para verificar que los precios de venta estén
dentro de cierto rango, impidiendo asi que los operadores den descuentos
excesivos.
Sub PostFactura(Factura):
Se usa para notificar al script que se acaba de procesar una factura. Es
llamada antes de imprimir el documento. La factura que acaba de procesarse
es pasada como argumento.
Sub ExtenderResumenPOS(Sesion, frmSalida):
Permite agregar información al reporte de resumen de una sesion (Cierre X).
«Sesion» es una referencia a la sesión cuyo resumen se está emitiendo,
«frmSalida» es una instancia de lfQuickView, la clase utilizada para
presentar los listados en ClearLight. La función es llamada inmediatamente
antes de mostrar el reporte en pantalla.
Function ValidarAtributo(codigoAtributo, ValorAtributo,
TipoEntidad, CodigoEntidad):
Es llamada desde el programa principal (ClearLight.exe) cada vez que se
intenta crear un nuevo atributo para una entidad. Permite que el usuario
defina reglas para la validación de los nuevos atributos.
Sub CodigoInvalido(Codigo):
Se notifica al script de que el operador intentó pasar un código de producto
invalido (cuyo valor se pasa en el argumento Codigo). Se agregó para
activar una alarma auditiva imposble de ignorar para el cajero, impidiendo
asi que se omitieran productos en la facturación.
Function GetEntidad(Tipo), Function GetItem(Tipo):
Permite que un componente externo (DLL) suministre al programa principal
instancias de nuevas entidades no contempladas en el diseño original. Una
empresa de transporte, por ejemplo, podria incluir las unidades de
transporte como elementos de ClearLight. Estas entidades deben satisfacer
los requerimientos de la Interfaz Standard de Personas Comerciales (ISPC).
Function GetDocumento(Tipo):
Permite que un componente externo (DLL) suministre al programa principal
instancias de nuevos documentos no contemplados en el diseño original. Esa
misma empresa de transporte podria incluir los Boletos como elementos de
ClearLight. Estos documentos deben conformarse segun la Interfaz Standard de
Documentos Comerciales (ISDOC).
Sub SesionMudada(Sesion, EquipoOrigen, NuevoEquipo):
Se notifica que la sesion referenciada por el argumento Sesion ha
sido transferida desde el terminal indicado por EquipoOrigen al
terminal identificado por EquipoDestino.
Function ValorServicio():
Permite que el script determine el valor del cargo por servicio para la
venta cuyos detalles están cargados en la sesion activa.
Function AnularFactura(NumeroTicket):
Determina si la factura identificada por NumeroTicket
(correspondiente a la sesion activa) puede ser anulada por el operador.
Sub SesionCreada(numTerminal, idUsuario, NumeroSesion):
Notificacion de que una sesion de trabajo ha sido creada con el numero
NumeroSesion en el terminal identificado con numTerminal para el usuario
cuyo codigo se pasa en idUsuario.
Sub ExtenderResumenSesion(Sesion, fView):
Permite que el usuario envíe información adicional al listado de resumen (X)
de la sesion Sesion. fView es una instancia de la clase (forma) lfQuickView.
Sub SetFormaItems(laForma):
Es llamada desde la tabla de edicion rapida de roductos y servicios
(ClearLight) para pasarle al script una referencia a la forma de edición
rapida (laForma) para la cual esta a punto de cargarse un nuevo conjunto de
datos, de manera que sepa a que ventana referirse para obtener los datos que
le permitiran definir la consulta SQL que determinara los nuevos datos.
Function QueryFormaItems():
Devuelve la clausula de selección (lo que viene despues del WHERE y antes
del ORDER BY) de una consulta SQL que se empleará para obtener un conjunto
de productos a cargarse en la forma de edicion rapida. La forma en cuestión
ha sido pasada previamente mediante la sub SetFormaItems.
Sub ProcesarCobranza(ProcesadorCobranzas):
Es llamada desde una instancia de CProcesadorCobranza (la clase
responsable de procesar los datos de las cobranzas realizadas a los
clientes). La llamada se realiza desde dentro de una transaccion de la BD,
por lo que no es recomendable que haya ninguna interacción con el usuario ni
con dispositivos de salida dentro de esta rutina. El argumento
ProcesadorCobranzas es una referencia a la instancia de
CProcesadorCobranzas que está realizando el proceso.
La forma de cobranzas llama a la función Main del script
postCobroCuenta.vbs, habiendo definido la variable Forma con una
referencia a la forma donde se introdujeron los datos de los pagos recibdos,
y opcionalmente (si el cobro se realizó mediante un deposito directo) la
variable pBanco, una instancia de clsBancos cargada con
los datos del banco donde se realizó el deposito.
Sub AjustarDetalle(elDetalle):
Es llamada desde el formulario de carga de detalles en clrCaja (v6.1.2),
clrCaja5 (v6.1.5) y clrCaja8 (v6.1.5).
elDetalle es una instancia de clsRenglonSesion con las propiedades
codigoItem, PrecioUnitario y Cantidad cargadas con el código, precio de
venta propuesto y cantidad de unidades que acaban de ser pasadas en el
formulario de punto de ventas. Los cambios que AjustarDetalle haga sobre los
valores de estas propiedades almacenadas en elDetalle serán
registrados en la factura.
La intención es permitir la implementación de descuentos o transformaciones
por volúmen para ciertos artículos.
Sub TransferirCuenta(cuentaOrigen,
cuentaDestino):
Es llamada desde clsCuentasPos.Transferir, que normalmente se activa durante
el traslado de consumos entre cuentas (Mesas) en clrCaja4 y clrCaja7.
cuentaOrigen y cuentaDestino son enteros largos que contienen los números de
identificación de las cuentas respectivas. (clrCaja4.exe: v6.7.3,
clrCaja7.exe: v6.7.2)
Function AjustarPrecioPOS(codigo,
precio):
Es llamada desde las aplicaciones de punto de ventas (clrCaja, clrCaja5,
clrCaja8 y clrCaja11) para permitir ajustar el precio de venta de un
producto.
En las tres primeras el argumento codigo contiene el valor exacto
introducido por el usuario. En clrCaja11 contiene el código del producto
(que puede ser diferente del valor introducido por el operador).
El argumento precio contiene el precio "normal" de venta.
El valor devuelto es tomado como precio unitario de venta para el renglón en
proceso.
Function
AjustarCantidadPOS(codigo, cantidad):
Es llamada desde las aplicaciones de punto de ventas (clrCaja, clrCaja5,
clrCaja8 y clrCaja11) para permitir ajustar la cantidad de unidades
vendidas.
En las tres primeras el argumento codigo contiene el valor exacto
introducido por el usuario. En clrCaja11 contiene el código del producto
(que puede ser diferente del valor introducido por el operador).
El argumento cantidad contiene la cantidad de unidades obtenida a
partir de la entrada del usuario.
El valor devuelto es tomado como la cantidad de unidades vendidas para el
renglón en proceso.
Funciones genericas de
validacion:
A partir del 7 de noviembre de 2007, la funcionalidad de las "dll de Forma" (usrDLL) puede ser implementada igualmente mediante código contenido en posExt.vbs.
El nombre de una rutina de validación para un evento tiene
la siguiente forma:
<NombreForma>_<NombreControl>_<Evento>
por ejemplo:
frmFacturacionCompleta_txFechaFactura_LostFocus. Los nombres de las formas y
de los controles pueden ser consultados en el
documentador. La
información detallada sobre los eventos y su mecanismo de activación está
descrita aquí.
La validación está implementada como una operación en dos
partes. Primero se llama a la rutina de validación, pasándole los argumentos
necesarios, y luego se obtiene el resultado, consultando la variable
isValid.
El siguiente ejemplo exige que las fechas de la forma de
facturación de distribución pertenezca al mes actual:
Public isValid ' (As Boolean): se usa para devolver los resultados de las validaciones genéricas Public Sub frmFacturacionCompleta_txFechaFactura_LostFocus(pForm, pControl) isValid = True If Month(pControl.Fecha) <> Month(Date) Then isValid = False MsgBox "La factura debe ser de este mes", vbCritical, "Error de validacion" Exit Sub End If End Sub |
frmFechaFactura es el nombre del formulario, txFechaFactura el del control y LostFocus el nombre del evento pasado por la aplicación al activador de la DLL de la forma (que ahora tambien activa una rutina en posExt.vbs).
La rutina llamada debe
condicionar el valor de la variable
isValid. Si el
contenido del control es válido, debe asignarsele el valor True. De lo
contrario -es decir, si no se quiere acetar el valor- debe asignársele
False. Es importante, si se van a usar estas rutinas de validación, que se
asigne True a isValid cuando el valor sea valido. De lo contrario, no será
posible continuar adelante con la edición del formulario.
ADVERTENCIA: La llamada a la rutina de validación en posExt.vbs se realiza antes de la llamada a la función correspondiente de la DLL de usuario (si existe). Cualquier error en el script causará que la rutina de validación se interrumpa sin dar ninguna advertencia antes de llamar a la función correspondiente de la DLL.
Detectar las teclas presionadas en un formulario:
Las revisiones a partir de 21/06/2008 permiten que posExt responda directamente a las pulsaciones de teclas sobre los formularios que soportan CUsrDLL.
Para ello se pueden implementar en posExt los procedimientos <nombreForma>_KeyPress(Forma, KeyAscii) o <nombreForma>_KeyDown(Forma, keyCode, Shift). La primera detecta las teclas que generan caracteres, y el segundo se genera con la pulsación de cualquier tecla. El primero recibe en KeyAscii el valor ASCII del caracter pulsado, el segundo recibe el código de teclado (scan code) de la tecla apretada. En ambos casos, Forma es una referencia al formulario.
Ejemplo:
Un cliente acostumbrado a facturar con el precio neto (sin el IVA incluido) quiere ocasionalmente indicar el precio final de los productos (incluyendo el IVA). Su aplicación anterior tenía una tecla para este fin: escribes el precio incluyendo el impuesto, pulsas esa tecla y el impuesto se elimina.
Lo implementamos en posExt, de la siguiente manera:
Private Sub CalcularPrecioNeto(form, Dest) ' Suprimir el IVA Dim r, item, p With form.flxDetalles r = .Row Set item = CrearObjeto("AlmacenItemsVenta").ItemVenta(.TextMatrix(r, 0)) If item Is Nothing Then _ Exit Sub End With p = item.PorcentajeImpuesto(1) p = Dest.Value / (1 + (p / 100)) Dest.Value = p End Sub Public Sub frmFacturacionCompleta_KeyDown(Form, KeyCode, Shift) Dim s If KeyCode <> 115 Then Exit Sub ' {F4} s = Form.ActiveControl.Name If s = "txPrecioVenta" Or _ s = "txPrecioLista" Or _ s = "txPrecioTotal" Then _ CalcularPrecioNeto Form, Form.ActiveControl End Sub |
Como asociamos el mecanismo con una tecla de función, tuvimos que implementarlo en el evento KeyDown (KeyPress no "ve" las teclas de función).
La forma de facturación se llama frmFacturacionCompleta, de manera que el nombre de la función será frmFacturacionCompleta_KeyDown.
La lógica es simplisima: si la tecla pulsada no es F4, salimos sin hacer nada.
Determinamos si el control activo en el formulario es alguno de los que permite la lectura de precios (txPrecioVenta, txPrecioLista o txTotal).
Si es alguno de estos controles, llamamos a una función que determina el porcentaje de impuesto y lo elimina del precio registrado en el control.