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

EJEMPLO
#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