Función: MATA125 - Contrato de asociación

Versiones:

Microsiga Protheus 8.11, Protheus 10, Protheus 11, Protheus 12

Compatible países:

Todos

Sistemas operativos:

Todos

Compatible a las bases de datos:

Todas

Nivel de acceso:

Nivel 1 (Acceso Clientes)

Idiomas:

Todos




Producto:

Protheus 

Ocurrencia:

Rutina automática - MATA125 (Execauto)

Entorno:

SIGACOM - Compras

Descripción:

Esta rutina permite el registro de cualquier Contrato de asociación en la empresa. El Contrato de asociación es un contrato de suministro de productos por un determinado período.

Sintaxis:

MATA125 - Contrato de asociación ( [ ExpN1 ] [ ExpA1 ] [ ExpA2 ])

 

Nombre

Tipo

Descripción

Estándar

ExpA1

Array of Record

Encabezado del Contrato de asociación en la Rutina automática.


ExpA2

Array of Record

Ítems del Contrato de asociación en la Rutina automática.


ExpN1

Numérico

Opción de aRotina en Rutina automática.

3 - Inclusión

4 - Modificación

5 - Borrado

Devolución:

L (Lógico) = .T. (Muestra error) / .F. (OK)

Observaciones: 

Los campos de encabezado del Contrato de asociación (C3_EMISSAO / C3_FORNECE / C3_LOJA / C3_COND / C3_CONTATO / C3_FILENT) deben informarse obligatoriamente en esta rutina.

Los campos de ítems del Contrato de asociación (C3_PRODUTO / C3_QUANT / C3_PRECO) deben informarse obligatoriamente en esta rutina.

Si se informa el campo (C3_MOEDA), el campo (C3_TXMOEDA) también debe informarse en los ítems del contrato.

Si se modificara o borrara un contrato, el campo (C3_REC_WT) debe estar completado con el número del registro (SC3->(Recno())

 

Modificación del Contrato de asociación:

Para modificar/borrar ítems existentes en el Contrato de asociación, debe utilizarse LINPOS y AUTODELETA

Para incluir un nuevo ítem en un contrato existente, debe informarse el campo (C3_ITEM) con un registro nuevo, y NO utilizar LINPOS ni AUTODELETA.


Ejemplos:

#INCLUDE "MATA125.CH"
#INCLUDE "FWMVCDEF.CH"
#INCLUDE "PROTHEUS.CH"

User Function EXEC125()

Local aCab   := {}
Local aItens := {}  
Local cDoc   := ""  
Local nX     := 0
Private        lMsErroAuto := .F.   
ConOut(Repl("-",80))
ConOut(PadC("Rutina automática para Contrato de asociación",80))

//PREPARE ENVIRONMENT EMPRESA "01" SUCURSAL "1001" MÓDULO "COM"   


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Prueba de inclusión                                           
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿//| Verifica numero da CP       |//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ 

dbSelectArea("SC3")
dbSetOrder(1)
MsSeek(xFilial("SC3")+"zzzzzz",.T.)
dbSkip(-1)

cDoc := SC3->C3_NUM
If Empty(cDoc)    
    cDoc := StrZero(1,Len(SC3->C3_NUM))
Else
    cDoc := Soma1(cDoc)
EndIf

aadd(aCab,{"C3_FILIAL", xFilial("SC3"), NIL})
aadd(aCab,{"C3_NUM",cDoc,NIL})
aadd(aCab,{"C3_EMISSAO",dDataBase})
aadd(aCab,{"C3_FORNECE" ,"COM003" ,NIL})
aadd(aCab,{"C3_LOJA","01",NIL})
aadd(aCab,{"C3_COND" ,"003" ,NIL})
aadd(aCab,{"C3_MOEDA",1,NIL})

For nX := 1 To 2
    aLinha := {}           
    aadd(aLinha,{"C3_FILIAL",xFilial("SC3"),Nil})    
    aadd(aLinha,{"C3_ITEM",StrZero(nX,len(SC3->C3_ITEM)),Nil})          
    If nX==1
        aadd(aLinha,{"C3_PRODUTO"  ,"COM000000000000000000000000047",Nil})    
        aadd(aLinha,{"C3_QUANT",1,Nil})    
        aadd(aLinha,{"C3_PRECO",39,Nil})    
        aadd(aLinha,{"C3_TOTAL",39,Nil})            
    else
        aadd(aLinha,{"C3_PRODUTO"  ,"COM000000000000000000000000126",Nil})    
        aadd(aLinha,{"C3_QUANT",2,Nil})    
        aadd(aLinha,{"C3_PRECO",100,Nil})    
        aadd(aLinha,{"C3_TOTAL",200,Nil})            
    END        

    aadd(aLinha,{"C3_DATPRI",dDataBase,Nil})    
    aadd(aLinha,{"C3_DATPRF",dDataBase,Nil})    
    aadd(aItens,aLinha)
Next nX      

    
MSExecAuto( {|x,y,z| mata125(x,y,z)},aCab,aItens,3)             

If lMsErroAuto    
    MostraErro()
Else    
    MsgAlert("¡Incluido con éxito! "+cDoc)
Endif  


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Prueba de modificación                                           
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ   

aCab   := {}  
aItens := {}
aadd(aCab,{"C3_FILIAL", xFilial("SC3"), NIL})
aadd(aCab,{"C3_NUM",cDoc,NIL})
aadd(aCab,{"C3_EMISSAO",dDataBase})
aadd(aCab,{"C3_FORNECE" ,"COM003" ,NIL})
aadd(aCab,{"C3_LOJA","01",NIL})
aadd(aCab,{"C3_COND" ,"003" ,NIL})
aadd(aCab,{"C3_MOEDA",1,NIL})            

For nX := 1 To 3
    aLinha := {}           
    
    If nX==1
        aadd(aLinha,{"C3_PRODUTO"  ,"COM000000000000000000000000047",Nil})    
        aadd(aLinha,{"C3_QUANT",1,Nil})    
        aadd(aLinha,{"C3_PRECO",59,Nil})    
        aadd(aLinha,{"C3_TOTAL",59,Nil})            
    elseif nx==2
        aadd(aLinha,{"C3_PRODUTO"  ,"COM000000000000000000000000126",Nil})    
        aadd(aLinha,{"C3_QUANT",2,Nil})    
        aadd(aLinha,{"C3_PRECO",110,Nil})    
        aadd(aLinha,{"C3_TOTAL",220,Nil})    
    elseif nx==3
        aadd(aLinha,{"C3_PRODUTO"  ,"COM000000000000000000000000167",Nil})    
        aadd(aLinha,{"C3_QUANT",2,Nil})    
        aadd(aLinha,{"C3_PRECO",110,Nil})    
        aadd(aLinha,{"C3_TOTAL",220,Nil})        
    END        
    aadd(aLinha,{"C3_DATPRI",dDataBase,Nil})    
    aadd(aLinha,{"C3_DATPRF",dDataBase,Nil})
    aadd(aItens,aLinha)
Next nX       

MSExecAuto( {|x,y,z| mata125(x,y,z)},aCab,aItens,4)             

If lMsErroAuto    
    MostraErro()
Else    
    MsgAlert("¡Modificado con éxito! "+cDoc)
Endif             


//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//| Prueba de borrado                                            |
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

MSExecAuto( {|x,y,z| mata125(x,y,z)},aCab,aItens,5) 

If lMsErroAuto    
    MostraErro()
Else        
    MsgAlert("Excluído com sucesso! "+cDoc)
Endif  

MsgAlert("¡Final de Rutina automática! "+Time())       

//RESET ENVIRONMENT          

Return