01. DADOS GERAIS

Produto:

Linha de Produto:

Segmento:

Módulo:

TOTVS DMS (Linha Protheus) - Veículos (SIGAVEI)

Função:Saída Por Venda (VEIXA011)
Saída Devol Compra (VEIXA012)
Saída Por Transf. (VEIXA014)
Saída Por Remessa (VEIXA013)
Saída Ret. Remessa (VEIXA016)
Saída Consignação (VEIXA015)
Saída Ret. Consig. (VEIXA017)
País:Brasil
Ticket:Não se aplica.
Requisito/Story/Issue (informe o requisito relacionado) :Não se aplica.


02. DESCRIÇÃO

Abaixo, seguem as instruções para executar os processos de saída de veículos via MSExecAuto. Os dados apresentados nos exemplos são meramente ilustrativos.


03. DEMAIS INFORMAÇÕES


#include "PROTHEUS.CH"
 
User Function Venda_ExecAuto_VEIXA011()
  
    Local xAutoCab      := {}
    Local xAutoItens    := {}
    Local nOperacInc    := 3    // Operação de inclusão
    Local cTipoOperacao := "0"  // 0=Venda; 2=Transferencia; 3=Remessa; 4=Devolucao; 5=Consignado; 6=Ret Remessa; 7=Ret Consignado
    Local cSerieNFAutom := "1"  // Opcional - Serie da NF de Remessa. Quando este parametro for informado, a NF será gerada automaticamente e não será aberta. Caso vazio, será aberta a tela para escolha da NF
    Local cRotOrigem    := "VEIXA011"
 
    Private lMsErroAuto := .F.
 
    //Cabeçalho
    aAdd(xAutoCab,{"VV0_FILIAL"  ,xFilial("VV0")        ,Nil}) // Filial
    aAdd(xAutoCab,{"VV0_CLIFOR"  ,"C"                   ,Nil}) // Cliente ou fornecedor  C - Cliente / F- Fornecedor
    aAdd(xAutoCab,{"VV0_CODCLI"  ,"000007"              ,Nil}) // Código do Cliente deve existir na base
    aAdd(xAutoCab,{"VV0_LOJA"    ,"01"                  ,Nil}) // Loja
    aAdd(xAutoCab,{"VV0_FORPAG"  ,"003"                 ,Nil}) // Forma de pagamento
    aAdd(xAutoCab,{"VV0_NATFIN"  ,"VENDA"               ,Nil}) // Natureza de venda
    aAdd(xAutoCab,{"VV0_CODVEN"  ,"000001"              ,Nil}) // Código de vendedor
    aAdd(xAutoCab,{"VV0_VALFRE"  ,250                   ,Nil}) // Valor do Frete
  
    //Itens da Saída por Venda
    xAutoIt001 := {}
    aAdd(xAutoIt001,{"VVA_FILIAL"  ,xFilial("VVA")      ,Nil}) // Filial
    aAdd(xAutoIt001,{"VVA_CHASSI"  ,"CHASSI_TESTE" 		,Nil}) // Chassi
    aAdd(xAutoIt001,{"VVA_CODTES"  ,"501"               ,Nil}) // Código de TES (Tipo de entrada e saída)
    aAdd(xAutoIt001,{"VVA_VALDES"  ,0                   ,Nil}) // Valor de desconto
    aAdd(xAutoIt001,{"VVA_VALMOV"  ,200000              ,Nil}) // Valor do movimento
    aAdd(xAutoIt001,{"VVA_CENCUS"  ,"1"                 ,Nil}) // Centro de Custo
    aAdd(xAutoItens,xAutoIt001)

    MSExecAuto({|a,b,c,d,e,f,g,h,i,j,k,l,m,n| VEIXX001(a,b,c,d,e,f,g,h,i,j,k,l,m,n)}, xAutoCab, xAutoItens,{} , nOperacInc, cTipoOperacao, NIL, .F., , , ,cRotOrigem, , , cSerieNFAutom)
  
    If lMsErroAuto
        DisarmTransaction()
        MostraErro()
    Else
        FWAlertSuccess("Saída por VENDA concluída com sucesso","Atenção")
    EndIf
  
Return()
#include "PROTHEUS.CH"
 
User Function Devolucao_ExecAuto_VEIXA012()
  
    Local xAutoCab      := {}
    Local xAutoItens    := {}
    Local xAutoAux      := {}
    Local nOperacInc    := 3    // Operação de inclusão
    Local cTipoOperacao := "4"  // 0=Venda; 2=Transferencia; 3=Remessa; 4=Devolucao; 5=Consignado; 6=Ret Remessa; 7=Ret Consignado
    Local cSerieNFAutom := "1"  // Opcional - Serie da NF de Remessa. Quando este parametro for informado, a NF será gerada automaticamente e não será aberta. Caso vazio, será aberta a tela para escolha da NF
    Local cRotOrigem    := "VEIXA012"
    Local cNumTransacao := Space(TamSX3("VVF_TRACPA")[01])
    Local aPergs        := {}
 
    Private lMsErroAuto := .F.

    aAdd(aPergs, {1, "Numero transacao de compra a ser devolvida", cNumTransacao,  "", ".T.", "", ".T.", 80,  .T.})
 
    If ParamBox(aPergs, "Informe a compra a ser cancelada")

        VVF->(DBSetOrder(1))
        If VVF->(DBSeek(xFilial("VVF") + MV_PAR01))
 
            //Cabeçalho
            aAdd(xAutoCab,{"VV0_FILIAL"  ,xFilial("VV0")		,Nil})
            aAdd(xAutoCab,{"VV0_CLIFOR"  ,VVF->VVF_CLIFOR		,Nil})
            aAdd(xAutoCab,{"VV0_CODCLI"  ,VVF->VVF_CODFOR		,Nil})
            aAdd(xAutoCab,{"VV0_LOJA"    ,VVF->VVF_LOJA			,Nil})
            aAdd(xAutoCab,{"VV0_FORPAG"  ,VVF->VVF_FORPAG		,Nil})
            aAdd(xAutoCab,{"VV0_CODVEN"  ,"000001"				,Nil})
            aAdd(xAutoCab,{"VV0_NATFIN"  ,VVF->VVF_NATURE		,Nil})

            VVG->(DBSetOrder(1))
            If VVG->(DBSeek(xFilial("VVG") + MV_PAR01))
        
                //Itens da Devolução
                xAutoIt001 := {}
                aAdd(xAutoIt001,{"VVA_FILIAL"  ,xFilial("VVA")      ,Nil}) // Filial
                aAdd(xAutoIt001,{"VVA_CHASSI"  ,"8ADZZZ12XLY304762" ,Nil}) // Chassi
                aAdd(xAutoIt001,{"VVA_CODTES"  ,"501"               ,Nil}) // Código de tes (Tipo de entrada e saída)
                aAdd(xAutoIt001,{"VVA_VALDES"  ,0                   ,Nil}) // Valor de desconto
                aAdd(xAutoIt001,{"VVA_VALMOV"  ,30000               ,Nil}) // Valor do movimento
                aAdd(xAutoIt001,{"VVA_CENCUS"  ,"1"                 ,Nil}) // Centro de Custo
                aAdd(xAutoItens,xAutoIt001)

                SD1->(DBSetOrder(1))
                SD1->(DBSeek(xFilial("SD1")+VVF->VVF_NUMNFI + VVF->VVF_SERNFI + VVF->VVF_CODFOR + VVF->VVF_LOJA /*+ SB1->B1_COD*/))

                xAutoAuxIt001 := {}
                aAdd(xAutoAuxIt001,{"C6_NFORI"   ,SD1->D1_DOC       ,Nil})
                aAdd(xAutoAuxIt001,{"C6_SERIORI" ,SD1->D1_SERIE     ,Nil})
                aAdd(xAutoAuxIt001,{"C6_IDENTB6" ,SD1->D1_IDENTB6   ,Nil})
                aAdd(xAutoAuxIt001,{"C6_ITEMORI" ,SD1->D1_ITEM      ,Nil})
                //
                aAdd(xAutoAux,xAutoAuxIt001)

                MSExecAuto({|a,b,c,d,e,f,g,h,i,j,k,l,m,n| VEIXX001(a,b,c,d,e,f,g,h,i,j,k,l,m,n)}, xAutoCab, xAutoItens,{} , nOperacInc, cTipoOperacao, xAutoAux, .F., , , ,cRotOrigem, , , cSerieNFAutom)
            
                If lMsErroAuto
                    DisarmTransaction()
                    MostraErro()
                Else
                    FWAlertSuccess("Saída por DEVOLUÇÃO DE COMPRA concluída com sucesso","Atenção")
                EndIf
            Endif
        Endif
    Endif
  
Return()
#include "PROTHEUS.CH"
 
User Function Transferencia_ExecAuto_VEIXA014()
  
    Local xAutoCab      := {}
    Local xAutoItens    := {}
    Local nOperacInc    := 3    // Operação de inclusão
    Local cTipoOperacao := "2"  // 0=Venda; 2=Transferencia; 3=Remessa; 4=Devolucao; 5=Consignado; 6=Ret Remessa; 7=Ret Consignado
    Local cSerieNFAutom := "1"  // Opcional - Serie da NF de Remessa. Quando este parametro for informado, a NF será gerada automaticamente e não será aberta. Caso vazio, será aberta a tela para escolha da NF
    Local cRotOrigem    := "VEIXA014"
 
    Private lMsErroAuto := .F.
 
    //Cabeçalho
    aAdd(xAutoCab,{"VV0_FILIAL"  ,xFilial("VV0")        ,Nil}) // Filial
    aAdd(xAutoCab,{"VV0_CLIFOR"  ,"C"                   ,Nil}) // Cliente ou fornecedor  C - Cliente / F- Fornecedor
    aAdd(xAutoCab,{"VV0_CODCLI"  ,"000004"              ,Nil}) // Código do Cliente deve existir na base
    aAdd(xAutoCab,{"VV0_LOJA"    ,"01"                  ,Nil}) // Loja
    aAdd(xAutoCab,{"VV0_FORPAG"  ,"003"                 ,Nil}) // Forma de pagamento
    aAdd(xAutoCab,{"VV0_NATFIN"  ,"VENDA"               ,Nil}) // Natureza de venda
    aAdd(xAutoCab,{"VV0_CODVEN"  ,"000001"              ,Nil}) // Código de vendedor
    aAdd(xAutoCab,{"VV0_VALFRE"  ,250                   ,Nil}) // Valor do Frete
  
    //Itens da Saída por Transf.
    xAutoIt001 := {}
    aAdd(xAutoIt001,{"VVA_FILIAL"  ,xFilial("VVA")      ,Nil}) // Filial
    aAdd(xAutoIt001,{"VVA_CHASSI"  ,"CHASSI_TESTE" 		,Nil}) // Chassi
    aAdd(xAutoIt001,{"VVA_CODTES"  ,"501"               ,Nil}) // Código de tes (Tipo de entrada e saída)
    aAdd(xAutoIt001,{"VVA_VALDES"  ,0                   ,Nil}) // Valor de desconto
    aAdd(xAutoIt001,{"VVA_VALMOV"  ,20000               ,Nil}) // Valor do movimento
    aAdd(xAutoIt001,{"VVA_CENCUS"  ,"1"                 ,Nil}) // Centro de Custo
    aAdd(xAutoItens,xAutoIt001)
 
    MSExecAuto({|a,b,c,d,e,f,g,h,i,j,k,l,m,n| VEIXX001(a,b,c,d,e,f,g,h,i,j,k,l,m,n)}, xAutoCab, xAutoItens,{} , nOperacInc, cTipoOperacao, NIL, .F., , , ,cRotOrigem, , , cSerieNFAutom)
  
    If lMsErroAuto
        DisarmTransaction()
        MostraErro()
    Else
        FWAlertSuccess("Saída por TRANSFERENCIA concluída com sucesso","Atenção")
    EndIf
  
Return()
#include "PROTHEUS.CH"
 
User Function Remessa_ExecAuto_VEIXA013()
  
    Local xAutoCab      := {}
    Local xAutoItens    := {}
    Local nOperacInc    := 3    // Operação de inclusão
    Local cTipoOperacao := "3"  // 0=Venda; 2=Transferencia; 3=Remessa; 4=Devolucao; 5=Consignado; 6=Ret Remessa; 7=Ret Consignado
    Local cSerieNFAutom := "1"  // Opcional - Serie da NF de Remessa. Quando este parametro for informado, a NF será gerada automaticamente e não será aberta. Caso vazio, será aberta a tela para escolha da NF
    Local cRotOrigem    := "VEIXA013"
 
    Private lMsErroAuto := .F.
 
    //Cabeçalho
    aAdd(xAutoCab,{"VV0_FILIAL"  ,xFilial("VV0")        ,Nil}) // Filial
    aAdd(xAutoCab,{"VV0_CLIFOR"  ,"C"                   ,Nil}) // Cliente ou fornecedor  C - Cliente / F- Fornecedor
    aAdd(xAutoCab,{"VV0_CODCLI"  ,"000001"              ,Nil}) // Código do Cliente deve existir na base
    aAdd(xAutoCab,{"VV0_LOJA"    ,"01"                  ,Nil}) // Loja
    aAdd(xAutoCab,{"VV0_FORPAG"  ,"003"                 ,Nil}) // Forma de pagamento
    aAdd(xAutoCab,{"VV0_NATFIN"  ,"VENDA"               ,Nil}) // Natureza de venda
    aAdd(xAutoCab,{"VV0_CODVEN"  ,"000001"              ,Nil}) // Código de vendedor
    aAdd(xAutoCab,{"VV0_VALFRE"  ,250                   ,Nil}) // Valor do Frete
  
    //Itens da Remessa
    xAutoIt001 := {}
    aAdd(xAutoIt001,{"VVA_FILIAL"  ,xFilial("VVA")      ,Nil}) // Filial
    aAdd(xAutoIt001,{"VVA_CHASSI"  ,"CHASSI_TESTE_001"  ,Nil}) // Chassi
    aAdd(xAutoIt001,{"VVA_CODTES"  ,"501"               ,Nil}) // Código de tes (Tipo de entrada e saída)
    aAdd(xAutoIt001,{"VVA_VALDES"  ,0                   ,Nil}) // Valor de desconto
    aAdd(xAutoIt001,{"VVA_VALMOV"  ,20000               ,Nil}) // Valor do movimento
    aAdd(xAutoIt001,{"VVA_CENCUS"  ,"1"                 ,Nil}) // Centro de Custo
    aAdd(xAutoItens,xAutoIt001)
 
    xAutoIt002 := {}
    aAdd(xAutoIt002,{"VVA_FILIAL"  ,xFilial("VVA")     ,Nil}) // Filial
    aAdd(xAutoIt002,{"VVA_CHASSI"  ,"CHASSI_TESTE_002" ,Nil}) // Chassi
    aAdd(xAutoIt002,{"VVA_CODTES"  ,"501"              ,Nil}) // Código de tes (Tipo de entrada e saída)
    aAdd(xAutoIt002,{"VVA_VALDES"  ,5000               ,Nil}) // Valor de desconto
    aAdd(xAutoIt002,{"VVA_VALMOV"  ,50000              ,Nil}) // Valor do movimento
    aAdd(xAutoItens,xAutoIt002)
 
    xAutoIt003 := {}
    aAdd(xAutoIt003,{"VVA_FILIAL"  ,xFilial("VVA")     ,Nil}) // Filial
    aAdd(xAutoIt003,{"VVA_CHASSI"  ,"CHASSI_TESTE_003" ,Nil}) // Chassi
    aAdd(xAutoIt003,{"VVA_CODTES"  ,"501"              ,Nil}) // Código de tes (Tipo de entrada e saída)
    aAdd(xAutoIt003,{"VVA_VALDES"  ,0                  ,Nil}) // Valor de desconto
    aAdd(xAutoIt003,{"VVA_VALMOV"  ,15000              ,Nil}) // Valor do movimento
    aAdd(xAutoItens,xAutoIt003)
 
    MSExecAuto({|a,b,c,d,e,f,g,h,i,j,k,l,m,n| VEIXX001(a,b,c,d,e,f,g,h,i,j,k,l,m,n)}, xAutoCab, xAutoItens,{} , nOperacInc, cTipoOperacao, NIL, .F., , , ,cRotOrigem, , , cSerieNFAutom)
  
    If lMsErroAuto
        DisarmTransaction()
        MostraErro()
    Else
        FWAlertSuccess("Saída por REMESSA concluída com sucesso","Atenção")
    EndIf
  
Return()
#include "PROTHEUS.CH"
 
User Function RetRemessa_ExecAuto_VEIXA016()
  
    Local xAutoCab      := {}
    Local xAutoItens    := {}
    Local xAutoAux      := {}
    Local nOperacInc    := 3    // Operação de inclusão
    Local cTipoOperacao := "6"  // 0=Venda; 2=Transferencia; 3=Remessa; 4=Devolucao; 5=Consignado; 6=Ret Remessa; 7=Ret Consignado
    Local cSerieNFAutom := "1"  // Opcional - Serie da NF de Remessa. Quando este parametro for informado, a NF será gerada automaticamente e não será aberta. Caso vazio, será aberta a tela para escolha da NF
    Local cRotOrigem    := "VEIXA016"
    Local cNumTransacao := Space(TamSX3("VVF_TRACPA")[01])
    Local aPergs        := {}
 
    Private lMsErroAuto := .F.

    aAdd(aPergs, {1, "Numero da remessa a ser retornada", cNumTransacao,  "", ".T.", "", ".T.", 80,  .T.})
 
    If ParamBox(aPergs, "Informe a remessa a ser retornada")

        VVF->(DBSetOrder(1))
        If VVF->(DBSeek(xFilial("VVF") + MV_PAR01))
 
            //Cabeçalho
            aAdd(xAutoCab,{"VV0_FILIAL"  ,xFilial("VV0")		,Nil})
            aAdd(xAutoCab,{"VV0_CLIFOR"  ,VVF->VVF_CLIFOR		,Nil})
            aAdd(xAutoCab,{"VV0_CODCLI"  ,VVF->VVF_CODFOR		,Nil})
            aAdd(xAutoCab,{"VV0_LOJA"    ,VVF->VVF_LOJA			,Nil})
            aAdd(xAutoCab,{"VV0_FORPAG"  ,VVF->VVF_FORPAG		,Nil})
            aAdd(xAutoCab,{"VV0_CODVEN"  ,"000001"				,Nil})
            aAdd(xAutoCab,{"VV0_NATFIN"  ,VVF->VVF_NATURE		,Nil})

            VVG->(DBSetOrder(1))
            If VVG->(DBSeek(xFilial("VVG") + MV_PAR01))
        
                //Itens da Saída por Retorno de Remessa
                xAutoIt001 := {}
                aAdd(xAutoIt001,{"VVA_FILIAL"  ,xFilial("VVA")      ,Nil}) // Filial
                aAdd(xAutoIt001,{"VVA_CHASSI"  ,VVG->VVG_CHASSI     ,Nil}) // Chassi
                aAdd(xAutoIt001,{"VVA_CODTES"  ,"501"               ,Nil}) // Código de tes (Tipo de entrada e saída)
                aAdd(xAutoIt001,{"VVA_VALDES"  ,VVG->VVG_VALDES     ,Nil}) // Valor de desconto
                aAdd(xAutoIt001,{"VVA_VALMOV"  ,VVG->VVG_VALUNI     ,Nil}) // Valor do movimento
                aAdd(xAutoIt001,{"VVA_CENCUS"  ,"1"                 ,Nil}) // Centro de Custo
                aAdd(xAutoItens,xAutoIt001)

                SD1->(DBSetOrder(1))
                SD1->(DBSeek(xFilial("SD1")+VVF->VVF_NUMNFI + VVF->VVF_SERNFI + VVF->VVF_CODFOR + VVF->VVF_LOJA + SB1->B1_COD))

                xAutoAuxIt001 := {}
                aAdd(xAutoAuxIt001,{"C6_NFORI"   ,SD1->D1_DOC       ,Nil})
                aAdd(xAutoAuxIt001,{"C6_SERIORI" ,SD1->D1_SERIE     ,Nil})
                aAdd(xAutoAuxIt001,{"C6_IDENTB6" ,SD1->D1_IDENTB6   ,Nil})
                aAdd(xAutoAuxIt001,{"C6_ITEMORI" ,SD1->D1_ITEM      ,Nil})
                //
                aAdd(xAutoAux,xAutoAuxIt001)

                MSExecAuto({|a,b,c,d,e,f,g,h,i,j,k,l,m,n| VEIXX001(a,b,c,d,e,f,g,h,i,j,k,l,m,n)}, xAutoCab, xAutoItens,{} , nOperacInc, cTipoOperacao, xAutoAux, .F., , , ,cRotOrigem, , , cSerieNFAutom)
            
                If lMsErroAuto
                    DisarmTransaction()
                    MostraErro()
                Else
                    FWAlertSuccess("Saída por RETORNO REMESSA concluída com sucesso","Atenção")
                EndIf

            Endif

        Endif
        
    Endif
  
Return()
#include "PROTHEUS.CH"
 
User Function Consignado_ExecAuto_VEIXA015()
  
    Local xAutoCab      := {}
    Local xAutoItens    := {}
    Local nOperacInc    := 3    // Operação de inclusão
    Local cTipoOperacao := "5"  // 0=Venda; 2=Transferencia; 3=Remessa; 4=Devolucao; 5=Consignado; 6=Ret Remessa; 7=Ret Consignado
    Local cSerieNFAutom := "1"  // Opcional - Serie da NF de Remessa. Quando este parametro for informado, a NF será gerada automaticamente e não será aberta. Caso vazio, será aberta a tela para escolha da NF
    Local cRotOrigem    := "VEIXA015"
 
    Private lMsErroAuto := .F.
 
    //Cabeçalho
    aAdd(xAutoCab,{"VV0_FILIAL"  ,xFilial("VV0")        ,Nil}) // Filial
    aAdd(xAutoCab,{"VV0_CLIFOR"  ,"C"                   ,Nil}) // Cliente ou fornecedor  C - Cliente / F- Fornecedor
    aAdd(xAutoCab,{"VV0_CODCLI"  ,"000001"              ,Nil}) // Código do Cliente deve existir na base
    aAdd(xAutoCab,{"VV0_LOJA"    ,"01"                  ,Nil}) // Loja
    aAdd(xAutoCab,{"VV0_FORPAG"  ,"003"                 ,Nil}) // Forma de pagamento
    aAdd(xAutoCab,{"VV0_NATFIN"  ,"VENDA"               ,Nil}) // Natureza de venda
    aAdd(xAutoCab,{"VV0_CODVEN"  ,"000001"              ,Nil}) // Código de vendedor
    aAdd(xAutoCab,{"VV0_VALFRE"  ,250                   ,Nil}) // Valor do Frete
  
    //Itens da Saída por Consignação
    xAutoIt001 := {}
    aAdd(xAutoIt001,{"VVA_FILIAL"  ,xFilial("VVA")      ,Nil}) // Filial
    aAdd(xAutoIt001,{"VVA_CHASSI"  ,"CHASSI_TESTE_001"  ,Nil}) // Chassi
    aAdd(xAutoIt001,{"VVA_CODTES"  ,"501"               ,Nil}) // Código de tes (Tipo de entrada e saída)
    aAdd(xAutoIt001,{"VVA_VALDES"  ,0                   ,Nil}) // Valor de desconto
    aAdd(xAutoIt001,{"VVA_VALMOV"  ,20000               ,Nil}) // Valor do movimento
    aAdd(xAutoIt001,{"VVA_CENCUS"  ,"1"                 ,Nil}) // Centro de Custo
    aAdd(xAutoItens,xAutoIt001)
 
    xAutoIt002 := {}
    aAdd(xAutoIt002,{"VVA_FILIAL"  ,xFilial("VVA")     ,Nil}) // Filial
    aAdd(xAutoIt002,{"VVA_CHASSI"  ,"CHASSI_TESTE_002" ,Nil}) // Chassi
    aAdd(xAutoIt002,{"VVA_CODTES"  ,"501"              ,Nil}) // Código de tes (Tipo de entrada e saída)
    aAdd(xAutoIt002,{"VVA_VALDES"  ,5000               ,Nil}) // Valor de desconto
    aAdd(xAutoIt002,{"VVA_VALMOV"  ,50000              ,Nil}) // Valor do movimento
    aAdd(xAutoItens,xAutoIt002)
 
    xAutoIt003 := {}
    aAdd(xAutoIt003,{"VVA_FILIAL"  ,xFilial("VVA")     ,Nil}) // Filial
    aAdd(xAutoIt003,{"VVA_CHASSI"  ,"CHASSI_TESTE_003" ,Nil}) // Chassi
    aAdd(xAutoIt003,{"VVA_CODTES"  ,"501"              ,Nil}) // Código de tes (Tipo de entrada e saída)
    aAdd(xAutoIt003,{"VVA_VALDES"  ,0                  ,Nil}) // Valor de desconto
    aAdd(xAutoIt003,{"VVA_VALMOV"  ,15000              ,Nil}) // Valor do movimento
    aAdd(xAutoItens,xAutoIt003)
 
    MSExecAuto({|a,b,c,d,e,f,g,h,i,j,k,l,m,n| VEIXX001(a,b,c,d,e,f,g,h,i,j,k,l,m,n)}, xAutoCab, xAutoItens,{} , nOperacInc, cTipoOperacao, NIL, .F., , , ,cRotOrigem, , , cSerieNFAutom)
  
    If lMsErroAuto
        DisarmTransaction()
        MostraErro()
    Else
        FWAlertSuccess("Saída por CONSIGNAÇÃO concluída com sucesso","Atenção")
    EndIf
  
Return()
#include "PROTHEUS.CH"
 
User Function RetConsignado_ExecAuto_VEIXA017()
  
    Local xAutoCab      := {}
    Local xAutoItens    := {}
    Local xAutoAux      := {}
    Local nOperacInc    := 3    // Operação de inclusão
    Local cTipoOperacao := "7"  // 0=Venda; 2=Transferencia; 3=Remessa; 4=Devolucao; 5=Consignado; 6=Ret Remessa; 7=Ret Consignado
    Local cSerieNFAutom := "1"  // Opcional - Serie da NF de Remessa. Quando este parametro for informado, a NF será gerada automaticamente e não será aberta. Caso vazio, será aberta a tela para escolha da NF
    Local cRotOrigem    := "VEIXA017"
    Local cNumTransacao := Space(TamSX3("VVF_TRACPA")[01])
    Local aPergs        := {}
 
    Private lMsErroAuto := .F.

    aAdd(aPergs, {1, "Numero da consignação a ser retornada", cNumTransacao,  "", ".T.", "", ".T.", 80,  .T.})
 
    If ParamBox(aPergs, "Informe a consignação a ser retornada")

        VVF->(DBSetOrder(1))
        If VVF->(DBSeek(xFilial("VVF") + MV_PAR01))
 
            //Cabeçalho
            aAdd(xAutoCab,{"VV0_FILIAL"  ,xFilial("VV0")		,Nil})
            aAdd(xAutoCab,{"VV0_CLIFOR"  ,VVF->VVF_CLIFOR		,Nil})
            aAdd(xAutoCab,{"VV0_CODCLI"  ,VVF->VVF_CODFOR		,Nil})
            aAdd(xAutoCab,{"VV0_LOJA"    ,VVF->VVF_LOJA			,Nil})
            aAdd(xAutoCab,{"VV0_FORPAG"  ,VVF->VVF_FORPAG		,Nil})
            aAdd(xAutoCab,{"VV0_CODVEN"  ,"000001"				,Nil})
            aAdd(xAutoCab,{"VV0_NATFIN"  ,VVF->VVF_NATURE		,Nil})

            VVG->(DBSetOrder(1))
            If VVG->(DBSeek(xFilial("VVG") + MV_PAR01))
        
                //Itens do Retorno Consignação
                xAutoIt001 := {}
                aAdd(xAutoIt001,{"VVA_FILIAL"  ,xFilial("VVA")      ,Nil}) // Filial
                aAdd(xAutoIt001,{"VVA_CHASSI"  ,VVG->VVG_CHASSI     ,Nil}) // Chassi
                aAdd(xAutoIt001,{"VVA_CODTES"  ,"501"               ,Nil}) // Código de tes (Tipo de entrada e saída)
                aAdd(xAutoIt001,{"VVA_VALDES"  ,VVG->VVG_VALDES     ,Nil}) // Valor de desconto
                aAdd(xAutoIt001,{"VVA_VALMOV"  ,VVG->VVG_VALUNI     ,Nil}) // Valor do movimento
                aAdd(xAutoIt001,{"VVA_CENCUS"  ,"1"                 ,Nil}) // Centro de Custo
                aAdd(xAutoItens,xAutoIt001)

                SD1->(DBSetOrder(1))
                SD1->(DBSeek(xFilial("SD1")+VVF->VVF_NUMNFI + VVF->VVF_SERNFI + VVF->VVF_CODFOR + VVF->VVF_LOJA /*+ SB1->B1_COD*/))

                xAutoAuxIt001 := {}
                aAdd(xAutoAuxIt001,{"C6_NFORI"   ,SD1->D1_DOC       ,Nil})
                aAdd(xAutoAuxIt001,{"C6_SERIORI" ,SD1->D1_SERIE     ,Nil})
                aAdd(xAutoAuxIt001,{"C6_IDENTB6" ,SD1->D1_IDENTB6   ,Nil})
                aAdd(xAutoAuxIt001,{"C6_ITEMORI" ,SD1->D1_ITEM      ,Nil})
                //
                aAdd(xAutoAux,xAutoAuxIt001)

                MSExecAuto({|a,b,c,d,e,f,g,h,i,j,k,l,m,n| VEIXX001(a,b,c,d,e,f,g,h,i,j,k,l,m,n)}, xAutoCab, xAutoItens,{} , nOperacInc, cTipoOperacao, xAutoAux, .F., , , ,cRotOrigem, , , cSerieNFAutom)
            
                If lMsErroAuto
                    DisarmTransaction()
                    MostraErro()
                Else
                    FWAlertSuccess("Saída por RETORNO CONSIGNAÇÃO concluída com sucesso","Atenção")
                EndIf
            Endif

        Endif

    Endif
  
Return()

O Tipo de Operação e a Rotina de Origem devem ser informados corretamente, conforme a operação de cancelamento que está sendo realizada. Isso porque o cancelamento de saídas como Devolução, Retorno de Consignação e Retorno de Remessa altera o status da nota de entrada originalmente recebida. Para que o status da nota retorne para 'Válida', é essencial informar a operação correta.

#include "PROTHEUS.CH"
 
User Function Canc_Transacao_ExecAuto()
  
    Local xAutoCab      := {}
    Local aPergs        := {}
    Local nCancOperac   := 5    // Operação de cancelamento
    Local cTipoOperacao := "3"  // 0=Venda; 2=Transferencia; 3=Remessa; 4=Devolucao; 5=Consignado; 6=Ret Remessa; 7=Ret Consignado
    Local cNumTransacao := Space(TamSX3("VV0_NUMTRA")[01])
    Local cRotOrigem    := "VEIXA013"
 
    Private lMsErroAuto := .F.
 
    aAdd(aPergs, {1, "Numero da transação", cNumTransacao,  "", ".T.", "VV0ATE", ".T.", 80,  .T.})
 
    If ParamBox(aPergs, "Informe a transação a ser cancelada")

        xAutoCab := {}
        aAdd(xAutoCab, { 'VV0_NUMTRA' , MV_PAR01 , NIL } ) //Numero da transação

        MSExecAuto({ |a,b,c,d,e,f,g,h,i,j,k| VEIXX001(a,b,c,d,e,f,g,h,i,j,k) }, xAutoCab, {} ,{} ,nCancOperac, cTipoOperacao , NIL, .F., {} , , ,cRotOrigem)

        If lMsErroAuto
            DisarmTransaction()
            MostraErro()
        Else
            FWAlertSuccess("Cancelamento da transação concluída com sucesso","Atenção")
        EndIf
    Endif
  
Return()


04. ASSUNTOS RELACIONADOS