Explicacin de funcionamiento de funciones y pasos
de los archivos relacionados con la separacin y los
traspasos
Archivo: UtilReaprovisionamiento.asp
Funcin: Obtener_Cantidad_Reaprovisionamiento (pArt, pAlm, pCan,
pMensaje, pOpc1, pOpc2)
Comprueba si hay stock de un producto en el almacn aduanero y calcula la
cantidad a reaprovisionar en funcin de la necesidad actual y la cantidad
para reaprovisionar X das.
Funcin: ExisteArtculoDisponibleEnAlmacn (pAso, pArt, pAlm, pOpc1)
Mira en la tabla Articulos_Stock si hay artculos para el asociado, almacn y
artculo y adems que el ArtStockDispo=SI
La funcin devuelve S o No si el Stock es >0
Funcin: ExisteTraspasoPendienteAbierto (pAso, pArt, pAlmacenesOrigen,
pAlmDes, pOpc1)
Comprueba en la tabla de traspasos si hay uno en estado ABI (abierto),
sobre un artculo si no hay para ese artculo mira si hay uno abierto
La funcin devuelve el traspaso abierto o sino devuelve 0
Funcin: TraspasosPendietesAlm (pAso, pArt, pAlmacenesOrigen, pAlmDes,
pOpc1)
Devuelve la cantidad de la cantidad de traspasos por artculo (TraArtCan),
menos la cantidad de artculos del traspaso entrante (TraArtCanEnt):
(TraArtCan TraArtCanEnt)
La funcin devuelve una cantidad o sino 0
Funcin: TraspasosPendientesOtroAlm (pAso, pArt, pAlm)
Calcula la cantidad de artculos que restan dado un artculo y un almacn.
La funcin devuelve la resta de TraArtCan y TraArtCanEnt sino 0
Funcin: CantidadEnAlmacen (pAso, pArt, pAlm)
Devuelve la cantidad de artculos en stock (que no estn bloqueados) de
Articulos_Stock
La funcin devuelve ArtStock ArtStockBlo, en otro caso 0
1
Funcin: UdsVendidasMes (pAso, pAnio, pMes, pArt)
Devuelve las unidades vendidas en un periodo indicado menos las unidades
abonadas en un periodo indicado.
La funcin devuelve Ivendidas-Iabonadas y si es <0 devuelve 0
Funcin: ObtenerUnidasdesCaja (pAso, pArt, pAlm, pOpc1)
Obtiene las unidades por caja de un artculo de la tabla FORMATO_BLISTER
La funcin devuelve el nmero de artculos por caja.
Funcin: RedondeaEnteroSiguiente (num)
Redondea un entero al siguiente
Funcin: GenerarCabeceraTraspaso (lAso, lAlmOri, lAlmDes)
Genera en la tabla Traspasos_000 la cabecera.
La funcin devuelve un valor (idCabecera) para luego aadir las lneas a ese
traspaso.
Funcin: InsertarLineaTraspaso (pAso, pArt, pAlm, pNumTra, pNecesidad,
pUdsCaja)
Inserta una lnea en un traspaso dado.
Comprueba que si le han pasado un reaprovisionamiento existente para
borrar las lneas correspondiente al artculo 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
Funcin: ObtenerCanPendienteSalirHueco (pAso, pArt, pHue, pAlm, pOpc1)
Nos calcula la cantidad pendiente de un hueco para un artculo. Lo busca en
ORDENES
La funcin devuelve la cantidad pendiente de salir de ese hueco y si no hay
devuelve 0
Archivo: DocumentoConfirmar.asp
Slo vamos a estudiar el caso de las reservas
Lnea de cdigo 2444
2
1 comprobamos artculos que se deben aadir por gestin de pedidos
urgentes o por pedidos mnimos
Procedimiento: Comprueba_Gestiones_Reserva (vDocumento)
Este procedimiento crea o modifica reservas para comprobar si se tienen
que aadir artculos por gestin de pedido urgente o pedido mnimo
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 reparacin 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 separacin
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 separacin.
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 funcin devuelve el n de documento que s se pasar a separacin (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()
3
Procedimiento: Separar ()
Obtenemos los datos del pedido de cliente. Entra en reservas_cab_XXX los
datos
Obtenemos los datos de las lneas de reservas por cada lnea de pedido
miramos la cantidad pendiente a separar para ese pedido (puede ya existir
ya una orden de separacin)
ComprobarPendientes (ArtCod)
Obtiene la cantidad pendiente de separar de un artculo dado. Lo mira en
SEPARACIONES_CAB y suma los SEPArtCan los que no estn como CER
(cerrados)
En CanPen metemos la cantidad de artculos de las reservas menos la
cantidad de artculos 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 artculo y devuelve el stock del artculo 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 separacin no hay stock esperando (ya sea por
artculos defectuosos o por un fallo en stock)
Cantidad pendiente separar de un artculo dado
ComprobarPendienteTotal (ArtCod)
Mira en separaciones la suma de las cantidades de un artculo dado y
lo devuelve.
El Stock real es el de calcular ComprobarStock(ArtCod) menos
ComprobarPendienteTotal (ArtCod)
Si el stock >= Cantidad Pendiente => Separacin completa
InsertarLin(ArtCoid, Can)
Este procedimiento inserta una nueva lnea o actualiza una
existente
Si la cantidad es >0
GenCabSeparacion ()
Genera la cabecera de la separacin
Caso 1: No hay rdenes de separacin abiertas de ese
pedido obtiene el nmero de la siguiente orden de
separacin y se lo a NumSep
NOTA: La variable nuevaSep=SI para saber si se ha
generado una nueva orden
Caso 2: Si hay orden de separacin. NumSep se carga
con el nmero de dicha orden de separacin
La funcin devuelve en numSep el nmero de
separaciones_cab y en nuevaSep si es una nueva
separacin.
Si es una nueva Separacin (NuevaSep=SI)
Inserta en Separaciones la separacin
Si no es el caso que ya existe una orden de separacin.
Obtenemos los datos de las lneas pro numSep y el
artculo que le hemos pasado a la funcin.
Si da Vaco => insertamos lnea en separacin
Si no da vaco => Suma en SEPArt Can la cantidad a
sumar
Si el Stock >0 y <CanPen es una separacin 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 pgina 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 algn pedido satisface la falta no se genera (caso en el que
se haya realizado un pedido manual)
CanPedPro = ComprobarPedPro (ArtCod)
Devuelve el nmero de unidades pendientes de entrar
Mira en la tabla pedidos y pedidos_cab de ese asociado.
Devuelve la cantidad o 0 en caso contario
5
Faltas= ComprobarFaltas (ArtCod)
Cantidad pendiente de servir
Devuelve el nmero de unidades que se han
contabilizado como falta para ese pedido y ese artculo.
Mira en la tabla de faltas.
CanSinUsar = CanPedPro Faltas
Si hay mercanca pendiente de entrar una vez descontadas
todas las faltas del artculo, se descuenta antes de generar la
falta.
Can = Can CanSinUsar si CanSinUsar>0
Si la separacin 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 nmero de unidades que se han contabilizado
como falta para ese pedido y ese artculo.
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 pgina
1)
GenerarFalta (Ref pagina 5)
Si no es la central <> 000
6
GenerarFalta (Ref pagina 5)
Al terminar de recorrer todas las lneas 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 separacin es parcial, cambia el estado de la
orden de separacin a CMP y solo pasa a ABI (Abierta) cuando se
pueda servir todo el pedido.
Si ResCabSerCom = SI
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 separacin en caso de que se
haya creado con posterioridad a la solicitud de envo de
mercanca.
SI vLanzarOrdenesPDA=SI
Como se pone la separacin 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 automtico ya se generarn
para las separaciones en discount y eximit.
FIN SEPARAR
Si GenararFacturaAut=SI
SeparacinConfirarAut.asp?Sep=numsep&aso=numAso (La 2 vez va
por aqu)
7
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 enva a PeiddosPro.asp
Si no es la central, nos dirigimos a EnviarPed ()
Funcin: 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 Mnimo + Cantidad Reservada + Cantidad Pendiente de Seprar
(Stock + Pedidos Pendientes de Entrar)
Si hay lneas genera el pedido a proveedor
Genera la cabecera RESERVAS_CAB_XXX
Inserta Lnea de Pedido
IVA
Si el NumPed=
Faltas.asp
Funcin: EnviarPed (Asociado, NumPed)
Obtiene los datos del pedido de compras
Si no da vaco: 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 lneas del pedido de compras al pedido de cliente
8
Response => Separar.asp?
ASO=AsoPro&NumDoc=PedCliNum&AsoCli=NumAso