Alcances: Microsiga Protheus 11
Versiones: Protheus 11
Compatible Países: Todos
Sistemas operativos: Todos
Compatible a las bases de datos: Todos
Idiomas: Portugués (Brasil) , Portugués (Portugal) , Español , Inglés
DESCRIPCIÓN: Esta rutina tiene como objetivo realizar el cierre de la cotización, actualizar el estatus de la solicitud de compras y generar el respectivo pedido de compras, a partir de la recepción de las informaciones de la propuesta vencedora.
OBSERVACIONES: Se deben informar los datos de la propuesta vencedora. Si dos propuestas se informan, la rutina asumirá que ambas son propuestas vencedoras (Detalles en el siguiente ejemplo).
PROGRAMA FUENTE: MATA160.PRX
SINTAXIS: MATA160(,nOpcAuto,aAutoCab,aAutoItm)
DEVOLUCIÓN: ()
PARÁMETROS::
NOMBRE | TIPO | DESCRIPCIÓN | OBLIGATORIO |
nOpcAuto | numérico | 6 = Analiza cotización | X |
aAutoCab | Array of records | Array con el encabezado de la cotización | X |
aAutoItm | Array of records | Array con los ítems de la cotización | X |
#Include 'Protheus.ch' #INCLUDE "RWMAKE.CH" #INCLUDE "TBICONN.CH" // BIBLIOTECA User Function Auto_160() Local aAutoCab := {} // Array del encabezado: 1-SC8->C8_NUM 2-comprador Local aAutoItm := {} // Array de los ítems de la cotizacion Local nIndItem := 1 Local lOk := .T. Local cNumCotacao := "" PRIVATE lMSErroAuto := .F. //------------------------ //| Apertura del entorno| //------------------------ PREPARE ENVIRONMENT EMPRESA "01" FILIAL "01" MODULO "COM" //informe el codigo de la empresa y de la sucursal conout("Inicio") // muestra en la consola del servidor cNumCotacao := "000001" // informe aqui el numero de la cotización que se analizara dbSelectArea("SC8") dbSetOrder(1) If !DbSeek(xFilial("SC8")+cNumCotacao) // FILIAL + NUM. COTACAO conout("Falla! Generar y actualizar cotización " +cNumCotacao+" ! ") conout("Fin") lOk := .F. Endif If lOk conout("Iniciando ejemplo de 4 propuestas para la cotizacion "+ cNumCotacao+".") aAdd(aAutoCab,{"C8_NUM",cNumCotacao,NIL}) // numero de la solicitud de compras que genero la(s) cotizacion(es) aAdd(aAutoCab,{"COMPACC","Administrador",NIL}) // nombre del comprador // ¡ Se debe suministrar los datos completos del proveedor vencedor para cada ítem de la cotización! // Los tamaños de los campos de la tabla SCE, se deben respetar. // El array de ítems (aAutoItn) debe tener tamaño igual al numero de items de la cotizacion aadd(aAutoitm,{}) aAdd(aAutoItm[nIndItem],{}) // Por cada item de la cotizacion, se debe informar el proveedor vencedor aAdd(atail(aAutoItm[nIndItem]),{"CE_ITEMCOT","0001",NIL}) //item de la cotizacion aAdd(atail(aAutoItm[nIndItem]),{"CE_FORNECE","001 ",NIL}) //informe el codigo del proveedor, respetando el tamaño exacto del campo aAdd(atail(aAutoItm[nIndItem]),{"CE_LOJA","01",NIL}) // tienda del proveedor aAdd(atail(aAutoItm[nIndItem]),{"CE_NUMPRO","01",NIL}) // numero de la propuesta aAdd(atail(aAutoItm[nIndItem]),{"CE_QUANT",10,NIL}) // cantidad nIndItem++ aadd(aAutoitm,{}) aAdd(aAutoItm[nIndItem],{}) // Para o item 0002, el proveedor vencedor es el "002 " aAdd(atail(aAutoItm[nIndItem]),{"CE_ITEMCOT","0002",NIL}) //item de la cotizacion (OBRIGATORIO) aAdd(atail(aAutoItm[nIndItem]),{"CE_FORNECE","002 ",NIL}) aAdd(atail(aAutoItm[nIndItem]),{"CE_LOJA","00",NIL}) aAdd(atail(aAutoItm[nIndItem]),{"CE_NUMPRO","01",NIL}) aAdd(atail(aAutoItm[nIndItem]),{"CE_QUANT",20,NIL}) nIndItem++ aadd(aAutoitm,{}) aAdd(aAutoItm[nIndItem],{}) // Para o item 0003, el proveedor vencedor es el "001 " aAdd(atail(aAutoItm[nIndItem]),{"CE_ITEMCOT","0003",NIL}) //item de la cotizacion (OBLIGATORIO) aAdd(atail(aAutoItm[nIndItem]),{"CE_FORNECE","001 ",NIL}) aAdd(atail(aAutoItm[nIndItem]),{"CE_LOJA","01",NIL}) aAdd(atail(aAutoItm[nIndItem]),{"CE_NUMPRO","01",NIL}) aAdd(atail(aAutoItm[nIndItem]),{"CE_QUANT",30,NIL}) nIndItem++ aadd(aAutoitm,{}) aAdd(aAutoItm[nIndItem],{}) // Para o item 0004, el proveedor vencedor es el "002 " aAdd(atail(aAutoItm[nIndItem]),{"CE_ITEMCOT","0004",NIL}) //item de la cotizacion (OBLIGATORIO)) aAdd(atail(aAutoItm[nIndItem]),{"CE_FORNECE","002 ",NIL}) aAdd(atail(aAutoItm[nIndItem]),{"CE_LOJA","00",NIL}) aAdd(atail(aAutoItm[nIndItem]),{"CE_NUMPRO","01",NIL}) aAdd(atail(aAutoItm[nIndItem]),{"CE_QUANT",40,NIL}) //ExecAuto MSExecAuto({|x,y,z| MATA160(,x,,y,z)},6,aAutoCab,aAutoItm) If lMsErroAuto conout("Error en el analisis de la cotizacion " + cNumCotacao +" !") Mostraerro() Else Alert("¡EXITO!") conout("Cotizacion " + cNumCotacao + "¡analizada con exito!") Endif Endif RESET ENVIRONMENT Return