Histórico da Página
Aviso | ||
---|---|---|
| ||
É possível executar este processo somente quando a montagem de volumes for efetuada manualmente no WMS Protheus, via rotina Montagem de Volumes. |
CONTEÚDO
Índice | ||||||
---|---|---|---|---|---|---|
|
01. VISÃO GERAL
É possível utilizar através de forma customizada as informações de volumes montados no WMS Protheus, para impressão na Nota Fiscal quando no faturamento.
...
Sendo assim existem dois Pontos de Entrada do faturamento que podem ser utilizados para realizar esta gravação.:
- MTASF2 - Geração de registros em SF2
Este Ponto de Entrada é chamado após a gravação dos dados principais da Nota Fiscal, porém, antes da gravação das informações de volumes e deve manipular o array Private aEspVol que alimentará os campos da Nota Fiscal.
- SF2460I - Atualização das tabelas referentes à nota fiscal
Este Ponto de Entrada é chamado após a gravação de todas as informação da Nota Fiscal e deve alterar diretamente os campos da tabela de Nota Fiscal (SF2).
02. EXEMPLO
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#include "protheus.ch" // Este ponto de entrada grava um array do tipo Private que irá gravar os volumes da nota fiscal User Function MTASF2() Local aVolumes := QtdVolSF2() If Len(aVolumes) > 0 // Caso queira limpar os volumes calculados no padrão // aEspVol := {} If Len(aEspVol) >= 1 aEspVol[1] := aVolumes Else Aadd(aRet, aVolumes) EndIf EndIf Return // Este ponto de entrada deve gravar diretamente na tabela SF2 nos campos correspondentes User Function SF2460I() Local aVolumes := QtdVolSF2() If Len(aVolumes) > 0 RecLock("SF2",.F.) SF2->F2_ESPECI1 := aVolumes[1] SF2->F2_VOLUME1 := aVolumes[2] SF2->(MsUnLock()) EndIf Return Static Function QtdVolSF2() Local aAreaAnt := GetArea() Local cQuery := "" Local cAliasQry := GetNextAlias() Local aRet := {} cQuery = "SELECT count(DISTINCT DCV_CODVOL) AS DCV_QTDVOL" cQuery+= " FROM "+RetSqlName("SC9")+" SC9" cQuery+= " INNER JOIN "+RetSqlName("DCV")+" DCV" cQuery+= " ON DCV.DCV_FILIAL = '"+xFilial("DCV")+"'" cQuery+= " AND DCV.DCV_PEDIDO = SC9.C9_PEDIDO" cQuery+= " AND DCV.DCV_ITEM = SC9.C9_ITEM" cQuery+= " AND DCV.DCV_SEQUEN = SC9.C9_SEQUEN" cQuery+= " AND DCV.DCV_PRDORI = SC9.C9_PRODUTO" cQuery+= " AND DCV.D_E_L_E_T_ = ' '" cQuery+= " WHERE SC9.C9_FILIAL = '"+xFilial("SC9")+"'" cQuery+= " AND SC9.C9_NFISCAL = '"+SF2->F2_DOC+"'" cQuery+= " AND SC9.C9_SERIENF = '"+SF2->F2_SERIE+"'" cQuery+= " AND SC9.D_E_L_E_T_ = ' '" DbUseArea(.T.,'TOPCONN',TcGenQry(,,cQuery),cAliasQry,.F.,.T.) TcSetField(cAliasQry,'DCV_QTDVOL','N',10,0) If (cAliasQry)->(!Eof()).And. (cAliasQry)->DCV_QTDVOL > 0) // Supondo que a espécie seja caixas Aadd(aRet, {"CAIXA", (cAliasQry)->DCV_QTDVOL}) EndIf (cAliasQry)->(dbCloseArea()) RestArea(aAreaAnt) Return aRet |
03. ASSUNTOS RELACIONADOS
Pontos de Entrada
04. ANEXO - PDF
HTML |
---|
<!-- esconder o menu -->
<style>
div.theme-default .ia-splitter #main {
margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
display: none;
}
#main {
padding-left: 10px;
padding-right: 10px;
overflow-x: hidden;
}
.aui-header-primary .aui-nav, .aui-page-panel {
margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
margin-left: 0px !important;
}
</style>
|