Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.


Abrangências:                            Microsiga Protheus 11
Versões:                                     Protheus 11
Compatível Países:                    Todos
Sistemas Operacionais:             Todos
Compatível às Bases de Dados: Todos
Idiomas:                                     Português (Brasil) , Português (Portugal) , Espanhol , Inglês


DESCRIÇÃO: Esta rotina tem por objetivo realizar o encerramento da cotação, atualizar o status da solicitação de compras e gerar o respectivo pedido de compracompras, a partir do recebimento das informações da proposta vencedora.

 OBSERVAÇÕES: Deve-se informar os dados apenas da proposta vencedora! A rotina realiza o encerramento da cotação, encerramento da solicitação de compras e geração do pedido de compras com os dados da proposta vencedora. Se duas propostas forem informadas, a rotina assumirá que ambas são propostas vencedoras (Detalhes no exemplo abaixo).

PROGRAMA FONTE: MATA160.PRX

SINTAXE: MATA160(,nOpcAuto,aAutoCab,aAutoItm)

RETORNO: ()

PARÂMETROS:

NOMETIPODESCRIÇÃOOBRIGATÓRIO
nOpcAutonumérico6 = Analisa cotaçãoX
aAutoCabArray of recordsArray com o cabeçalho da cotaçãoX
aAutoItmArray of recordsArray com os itens da cotaçãoX
Midnight
Bloco de código
Bloco de código
theme
languagedelphi
titlethemeEXEMPLOMidnight
firstline1
titleEXEMPLO
#Include 'Protheus.ch'
#INCLUDE "RWMAKE.CH" 
#INCLUDE "TBICONN.CH" // BIBLIOTECA
  
User Function Auto_160()
Local aAutoCab := {} // Array do cabecalho: 1-SC8->C8_NUM 2-comprador
Local aAutoItm := {} // Array dos itens da cotacao
Local nIndItem := 1
Local lOk := .T.
Local cNumCotacao := ""
PRIVATE lMSErroAuto := .F.
PRIVATE lAutoErrNoFile:= .T.
 
//------------------------
//| Abertura do ambiente|
//------------------------
PREPARE ENVIRONMENT EMPRESA "9901" FILIAL "01" MODULO "COM" //informe o codigo da empresa e da filial
  
conout("Inicio") // exibe no console do servidor
cNumCotacao := "000018000001" // informe aqui o numero da cotacao a ser analisada
  
dbSelectArea("SC8")
dbSetOrder(1)
If !DbSeek(xFilial("SC8")+cNumCotacao) // FILIAL + NUM. COTACAO
	    conout("Falha! Gerar e atualizar cotacao " +cNumCotacao+" ! ")
	    conout("Fim")
	    lOk := .F.
Endif
  
If lOk 
 
	    conout("Iniciando exemplo de 54 propostas para a cotacao "+ cNumCotacao+".")
	    aAdd(aAutoCab,{"C8_NUM",cNumCotacao,NIL}) // numero da solicitatacao de compras que gerou a(s) cotacao(oes)
	    aAdd(aAutoCab,{"COMPACC","Administrador",NIL}) // nome do comprador
 
 
	    // Deve-se fornecer os dados completos APENASdo DOfornecedor FORNECEDORvencedor VENCEDOR! 
	// No caso especifico desse ExecAuto, o fornecedor vencedor das cotacoes eh o "004 ".
	para cada item da cotacao!
    // Os tamanhos dos campos da tabela SCE devem ser respeitados.
	    // O array de itens (aAutoItn) deve ter comprimento igual aao quantidadenumero de cotacoesitens existentesda paracotacao
 a
 solicitacao de compras (nesse caso, 5)
	aadd(aAutoitm,{})
    aAdd(aAutoItm[nIndItem],{})
    // OsA dadoscada doitem fornecedorda vencedor devem ser declarados na primeira posicao do vetor aAutoItm

	aadd(aAutoitm,{})
	aAdd(aAutoItm[nIndItem],{})
	aAdd(cotacao, deve-se preencher o fornecedor vencedor
    aAdd(atail(aAutoItm[nIndItem]),{"CE_ITEMCOT","0001",NIL}) //item da cotacao
	    aAdd(atail(aAutoItm[nIndItem]),{"CE_FORNECE","004001   ",NIL}) //informe o codigo do fornecedor, respeitando o tamanho exato do campo
	    aAdd(atail(aAutoItm[nIndItem]),{"CE_LOJA","01",NIL}) // loja do fornecedor
	    aAdd(atail(aAutoItm[nIndItem]),{"CE_NUMPRO","01",NIL}) // numero da proposta
	    aAdd(atail(aAutoItm[nIndItem]),{"CE_QUANT",2010,NIL}) // quantidade
 
	    nIndItem++
	    aadd(aAutoitm,{})
	    aAdd(aAutoItm[nIndItem],{})
	    // Para o item 0002, o fornecedor vencedor eh o "002   "
    aAdd(atail(aAutoItm[nIndItem]),{"CE_ITEMCOT","00010002",NIL}) //item da cotacao (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, o fornecedor vencedor eh o "001   "
    aAdd(atail(aAutoItm[nIndItem]),{"CE_ITEMCOT","00010003",NIL}) //item da cotacao (OBRIGATORIO)
	    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],{})
	aAdd(atail(aAutoItm[nIndItem]),{"CE_ITEMCOT","0001",NIL})    // Para o item da cotacao (OBRIGATORIO)
	aAdd(atail(aAutoItm[nIndItem]),{"CE_FORNECE","",NIL})
	aAdd(atail(aAutoItm[nIndItem]),{"CE_LOJA","",NIL}) 
	 0004, o fornecedor vencedor eh o "002   "
    aAdd(atail(aAutoItm[nIndItem]),{"CE_NUMPRO","",NIL})
	aAdd(atail(aAutoItm[nIndItem]),{"CE_QUANT",,NIL})

	nIndItem++
	aadd(aAutoitm,{})
	aAdd(aAutoItm[nIndItem],{})
	aAdd(atail(aAutoItm[nIndItem]),{"CE_ITEMCOT","00010004",NIL}) //item da cotacao (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",40,NIL})

	  
    //ExecAuto
	    MSExecAuto({|x,y,z| MATA160(,x,,y,z)},6,aAutoCab,aAutoItm) 
 
	    If lMsErroAuto
        		conout("Erro na analise da cotacao " + cNumCotacao +" !") 
       		 Mostraerro() 
	    Else
        		Alert("SUCESSO!") 
        conout("Cotacao " + cNumCotacao + " analisada com sucesso!") 
	    Endif
Endif 
 
RESET ENVIRONMENT
Return

PARÂMETROS:

...