10
Explicación de funcionamiento de funciones y pasos de los archivos relacionados con la separación y los traspasos Archivo: UtilReaprovisionamiento.asp Función: Obtener_Cantidad_Reaprovisionamiento (pArt, pAlm, pCan, pMensaje, pOpc1, pOpc2) Comprueba si hay stock de un producto en el almacén aduanero y calcula la cantidad a reaprovisionar en función de la necesidad actual y la cantidad para reaprovisionar X días. Función: ExisteArtículoDisponibleEnAlmacén (pAso, pArt, pAlm, pOpc1) Mira en la tabla Articulos_Stock si hay artículos para el asociado, almacén y artículo y además que el ArtStockDispo=’SI’ La función devuelve Sí o No si el Stock es >0 Función: ExisteTraspasoPendienteAbierto (pAso, pArt, pAlmacenesOrigen, pAlmDes, pOpc1) Comprueba en la tabla de traspasos si hay uno en estado ABI (abierto), sobre un artículo ó si no hay para ese artículo mira si hay uno abierto La función devuelve el traspaso abierto o sino devuelve 0 Función: TraspasosPendietesAlm (pAso, pArt, pAlmacenesOrigen, pAlmDes, pOpc1) Devuelve la cantidad de la cantidad de traspasos por artículo (TraArtCan), menos la cantidad de artículos del traspaso entrante (TraArtCanEnt): (TraArtCan – TraArtCanEnt) La función devuelve una cantidad o sino 0 Función: TraspasosPendientesOtroAlm (pAso, pArt, pAlm) Calcula la cantidad de artículos que restan dado un artículo y un almacén. 1

Arch Ivo

Embed Size (px)

Citation preview

Page 1: Arch Ivo

Explicación de funcionamiento de funciones y pasos de los archivos relacionados con la separación y los traspasos

Archivo: UtilReaprovisionamiento.asp

Función: Obtener_Cantidad_Reaprovisionamiento (pArt, pAlm, pCan, pMensaje, pOpc1, pOpc2)

Comprueba si hay stock de un producto en el almacén aduanero y calcula la cantidad a reaprovisionar en función de la necesidad actual y la cantidad para reaprovisionar X días.

Función: ExisteArtículoDisponibleEnAlmacén (pAso, pArt, pAlm, pOpc1)

Mira en la tabla Articulos_Stock si hay artículos para el asociado, almacén y artículo y además que el ArtStockDispo=’SI’

La función devuelve Sí o No si el Stock es >0

Función: ExisteTraspasoPendienteAbierto (pAso, pArt, pAlmacenesOrigen, pAlmDes, pOpc1)

Comprueba en la tabla de traspasos si hay uno en estado ABI (abierto), sobre un artículo ó si no hay para ese artículo mira si hay uno abierto

La función devuelve el traspaso abierto o sino devuelve 0

Función: TraspasosPendietesAlm (pAso, pArt, pAlmacenesOrigen, pAlmDes, pOpc1)

Devuelve la cantidad de la cantidad de traspasos por artículo (TraArtCan), menos la cantidad de artículos del traspaso entrante (TraArtCanEnt): (TraArtCan – TraArtCanEnt)

La función devuelve una cantidad o sino 0

Función: TraspasosPendientesOtroAlm (pAso, pArt, pAlm)

Calcula la cantidad de artículos que restan dado un artículo y un almacén.

La función devuelve la resta de TraArtCan y TraArtCanEnt sino 0

Función: CantidadEnAlmacen (pAso, pArt, pAlm)

Devuelve la cantidad de artículos en stock (que no estén bloqueados) de Articulos_Stock

La función devuelve ArtStock – ArtStockBlo, en otro caso 0

Función: UdsVendidasMes (pAso, pAnio, pMes, pArt)

Devuelve las unidades vendidas en un periodo indicado menos las unidades abonadas en un periodo indicado.

1

Page 2: Arch Ivo

La función devuelve Ivendidas-Iabonadas y si es <0 devuelve 0

Función: ObtenerUnidasdesCaja (pAso, pArt, pAlm, pOpc1)

Obtiene las unidades por caja de un artículo de la tabla FORMATO_BLISTER

La función devuelve el número de artículos por caja.

Función: RedondeaEnteroSiguiente (num)

Redondea un entero al siguiente

Función: GenerarCabeceraTraspaso (lAso, lAlmOri, lAlmDes)

Genera en la tabla Traspasos_000 la cabecera.

La función devuelve un valor (idCabecera) para luego añadir las líneas a ese traspaso.

Función: InsertarLineaTraspaso (pAso, pArt, pAlm, pNumTra, pNecesidad, pUdsCaja)

Inserta una línea en un traspaso dado.

Comprueba que si le han pasado un reaprovisionamiento existente para borrar las líneas correspondiente al artículo actual y que las vuelva a calcular de nuevo.Si existe un reaprovisionamiento abierto se tiene que sumar la cantidad pNecesidad a la cantidad ya existente en ese reaprovisionamiento porque lo que pasamos en pNecesidad es la diferencia entre la necesidad total de reaprovisionarlo y lo pendiente de traspasar.Si no existe el reaprovisionamiento entonces se está creando uno nuevo con la cantidad pNecesidad

No devuelve nada, es un mero calculador…

Función: ObtenerCanPendienteSalirHueco (pAso, pArt, pHue, pAlm, pOpc1)

Nos calcula la cantidad pendiente de un hueco para un artículo. Lo busca en ORDENES

La función devuelve la cantidad pendiente de salir de ese hueco y si no hay devuelve 0

Archivo: DocumentoConfirmar.asp

Sólo vamos a estudiar el caso de las reservas

Línea de código 2444

1º comprobamos artículos que se deben añadir por gestión de pedidos urgentes o por pedidos mínimos

Procedimiento: Comprueba_Gestiones_Reserva (vDocumento)

Este procedimiento crea o modifica reservas para comprobar si se tienen que añadir artículos por gestión de pedido urgente o pedido mínimo

2

Page 3: Arch Ivo

2º Comprobamos servir completo en el caso de que esté modificando la cabecera de una reserva ya lanzada

If rs(ResCabGesAut)=’SI’ y ResAceptada=’SI’

Llama Comprobar_Cambio_Estado_Servir_Completo

Procedimiento: Comprobar_Cambio_Estado_Servir_Completo (pDocumento,pEstadoCmp)

En el caso de que cambie el estado a no completo puede que tenga ya órdenes de reparación por lo que se deben poner el estado a “ABI” para que se vean en el caso contrario se tiene que ocultar las órdenes de separación si la reserva no está completa.

Se le pasa el tipo de documento y la cabecera

3º Comprobar_Cambios_AlbaranesyFacturas

Se propagan los cambios de la reserva a los albaranes y facturas si existen

4º Se comprueba si ya ha sido aceptada (estado que se pone en Separar.asp), para no volver a lanzar la separación.

5º Se crea un nuevo pedido con lo pendiente. Se modifica la cabecera para que cuando entre en EntradaConfirmarAut.asp compruebe si debe separar el pedido entre disponibles y no disponibles.

6º DividirPedidosEnDisponiblesYNoDisponibles (pAso, pDoc)

Permite dividir un pedido de cliente (Reserva) en dos pedidos, uno con los disponibles y otro con los no disponibles.

La función devuelve el nº de documento que sí se pasará a separación (SI o NO)

7º Hace un update de Reservas_Cab_XXX y pone Sí en el campo ResCabDivPed a SI

8º Llama a Separar.asp?Ped=SI&numdoc=vDocumento&AsoCli=Asociado

Archivo: Separar.asp

Solo vamos a estudiar el caso de Ped=SI

Se llama al procedimiento Separar()

Procedimiento: Separar ()

Obtenemos los datos del pedido de cliente. Entra en reservas_cab_XXX los datos

Obtenemos los datos de las líneas de reservas por cada línea de pedido miramos la cantidad pendiente a separar para ese pedido (puede ya existir ya una orden de separación)

3

Page 4: Arch Ivo

ComprobarPendientes (ArtCod)Obtiene la cantidad pendiente de separar de un artículo dado. Lo mira en SEPARACIONES_CAB y suma los SEPArtCan los que no están como CER (cerrados)

En CanPen metemos la cantidad de artículos de las reservas menos la cantidad de artículos servidos en la reserva menos la cantidad pendiente de servir que se calculó en ComprobarPendientes(ArtCod)

Si la cantidadPendiente (CanPen) es >0

Comprobamos el stock

ComprobarStock(ArtCod)

Obtenemos los datos del artículo y devuelve el stock del artículo sin tener en cuenta la cantidad pendiente de separar. Sí se tiene en cuenta el stock bloqueado que es aquel que se produce cuando a la hora de realizar una separación no hay stock esperando (ya sea por artículos defectuosos o por un fallo en stock)

Cantidad pendiente separar de un artículo dadoComprobarPendienteTotal (ArtCod)

Mira en separaciones la suma de las cantidades de un artículo dado y lo devuelve.

El Stock real es el de calcular ComprobarStock(ArtCod) menos ComprobarPendienteTotal (ArtCod)

Si el stock >= Cantidad Pendiente => Separación completa

InsertarLin(ArtCoid, Can)

Este procedimiento inserta una nueva línea o actualiza una existente

Si la cantidad es >0

GenCabSeparacion ()

Genera la cabecera de la separación

Caso 1: No hay órdenes de separación abiertas de ese pedido obtiene el número de la siguiente orden de separación y se lo a NumSepNOTA: La variable nuevaSep=SI para saber si se ha generado una nueva orden

Caso 2: Si hay orden de separación. NumSep se carga con el número de dicha orden de separación

La función devuelve en numSep el número de separaciones_cab y en nuevaSep si es una nueva separación.

Si es una nueva Separación (NuevaSep=SI)

4

Page 5: Arch Ivo

Inserta en Separaciones la separación

Si no es el caso que ya existe una orden de separación.

Obtenemos los datos de las líneas pro numSep y el artículo que le hemos pasado a la función.

Si da Vacío => insertamos línea en separación

Si no da vacío => Suma en SEPArt Can la cantidad a sumar

Si el Stock >0 y <CanPen es una separación parcial

Llamamos de nuevo a InsertarLin()

Hay una falta => Cambio Reaprovisionamiento

Si NumAso=000 => Comprueba el reaprovisionamiento

vCanFalta=CanPen-CanSep

VCanReaprov=Obtener_Cantidad_Reaprovisionamiento (Ref página 1)

GenerarFalta (ArtCod, Can, CanReapro)

Este procedimiento sirve para no generar dos veces la misma falta. Tiene en cuenta la cantidad pendiente de entrar, ya que si algún pedido satisface la falta no se genera (caso en el que se haya realizado un pedido manual)

CanPedPro = ComprobarPedPro (ArtCod)

Devuelve el número de unidades pendientes de entrar

Mira en la tabla pedidos y pedidos_cab de ese asociado.

Devuelve la cantidad o 0 en caso contario

Faltas= ComprobarFaltas (ArtCod)

Cantidad pendiente de servir

Devuelve el número de unidades que se han contabilizado como falta para ese pedido y ese artículo.

Mira en la tabla de faltas.

CanSinUsar = CanPedPro – Faltas

Si hay mercancía pendiente de entrar una vez descontadas todas las faltas del artículo, se descuenta antes de generar la falta.

Can = Can – CanSinUsar si CanSinUsar>0

5

Page 6: Arch Ivo

Si la separación se produce tras una entrada comprueba que no existen faltas de ese pedido y si existen las cierra y genera una nueva.

FaltasPed = ComprobarFaltasPed (ArtCod)

Devuelve el número de unidades que se han contabilizado como falta para ese pedido y ese artículo.

Comprueba en la tabla FALTAS sumando la columna FALArtCan

Si Can<>FaltasPed y Can>0

Hacemos un update de FALTAS a ‘CER’ y luego genera una nueva falta y la guarda en FalNum

SI NO

GenerarFalta (Ref pagina 5)

Si no Stock>CanPen y no Stock>0 y Stock<CanPen => ES UNA FALTA

CanSep=0

Luego si el Asociado es el 000 compruebo el reaprovisionamiento

vFalta=CanPen – CanSep que es = 0

VCanReaprov = Obtener_Cantidad_Reaprovisionamiento (Ref página 1)

GenerarFalta (Ref pagina 5)

Si no es la central <> “000”

GenerarFalta (Ref pagina 5)

Al terminar de recorrer todas las líneas de las reservas_XXX hacemos un update RESERVAS_CAB_XXX y ponemos ResCabGesAut=’SI’ y ResCabAcep=’SI’

Si NumSep<>0 => Hay separaciones

SERVIR COMPLETO: Para controlar esto si el pedido hay que servirlo completo y la orden de separación es parcial, cambia el estado de la orden de separación a CMP y solo pasa a ABI (Abierta) cuando se pueda servir todo el pedido.

Si ResCabSerCom = ‘SI’

6

Page 7: Arch Ivo

Si PedEstado=’PedSepCmp’

Update separaciones_CAB y SepCabEstado=’ABI’

Sino

Update Separaciones_CAB y SepCabEsta =’CMP’ y vLanzarOrdenesPDA=’NO’

FIN

Update RESERVAS_CAB_XXX y ponemos a ResCabFesAut=’SI’ y ResCabAcep=’SI’

Comprobar_Separacion_Para_Autorizar_Por_Hora_Creacion()

Se comprueba si se oculta la separación en caso de que se haya creado con posterioridad a la solicitud de envío de mercancía.

SI vLanzarOrdenesPDA=’SI’

Como se pone la separación en estado abierto se generan las órdenes para la PDA

Si vienen de PeiddoProAut y el cliente es discoun o eximit no se generan porque el procedimiento automático ya se generarán para las separaciones en discount y eximit.

FIN SEPARAR

Si GenararFacturaAut=’SI’

SeparaciónConfirarAut.asp?Sep=numsep&aso=numAso (La 2º vez va por aquí)

SI NO

PedidoProAuto.asp (La 1º vez va por aquí)

ELSE

URL => Imprimir.asp?A=asociado&Tipo=RES&doc=NumDoc&ACE=SI

FIN

Archivo: PedidoProAut.asp

Empieza llamando a GenerarPeiddoAut ()

Procedimiento: GenerarPedidoAut()

Este procedimiento llama a GenararFaltas() y si estamos en la central (ASOCIADO=’000’ ) hace un update de PEDIDOS_CAB_000 y pone el PedCabEstado a ENV y te envía a PeiddosPro.asp

7

Page 8: Arch Ivo

Si no es la central, nos dirigimos a EnviarPed ()

Función: GesFaltas(NumAso)

Devuelve los registros de los que se neceistan para hacer un pedido.

La cantidad necesaria para hacer el pedido es: Cantidad a pedir = Faltas + Stock Mínimo + Cantidad Reservada + Cantidad Pendiente de Seprar – (Stock + Pedidos Pendientes de Entrar)

Si hay líneas genera el pedido a proveedor

Genera la cabecera RESERVAS_CAB_XXX Inserta Línea de Pedido IVA

Si el NumPed=””

Faltas.asp

Función: EnviarPed (Asociado, NumPed)

Obtiene los datos del pedido de compras

Si no da vacío: Obtiene los datos de cliente del asociado actual en el proveedor.

OJO: Los asociados pueden ser proveedores y clientes

Ejemplo: Pedido del asociado 001 al proveedor 5 cuyo asociado es el 003, la select intenta obtener de la lista de clientes de 003 el cliente cuyo asociado relacionado es el 001

Traspasa las líneas del pedido de compras al pedido de cliente

Response => Separar.asp?ASO=AsoPro&NumDoc=PedCliNum&AsoCli=NumAso

8