Histórico da Página
01. DADOS GERAIS
Linha de Produto: | Microsiga Protheus® |
---|---|
Segmento: | Serviços |
Módulo: | Fiscal |
02. DESCRIÇÃO
Este ponto de entrada tem a finalidade de fornecer flexibilidade de regra do preenchimento, na Portaria CAT 44 de São Paulo (Registro dos Estoques), dos valores para os campos:
...
Por meio desse ponto de entrada, poderão ser identificados os valores por regra da exceção fiscal, ultimas notas, média dos itens em estoque, etc, de acordo com a necessidade de cada empresa.
03. ESPECIFICAÇÃO
Parâmetros do ponto de entrada:
Nome | Tipo | Descrição |
---|---|---|
PARAMIXB | Array of Record | [1] = Código do Produto [2] = Alíquota ICMS (com base na tabela SB1) [3] = Último preço de venda (com base na tabela SB1) [4] = Margem Valor Agregado na Entrada (com base na tabela SB1) [5] = Preço final (com base na tabela SB1) |
Retorno:
Nome | Tipo | Descrição |
---|---|---|
Array of Record | Retorna um array com 4 posições, sendo: [1] = Alíquota ICMS, [2] = Último preço de venda, [3] = Margem Valor Agregado na Entrada, [4] = Preço final O ponto de entrada deverá retornar obrigatoriamente os 4 valores indicados, sendo que os valores padrão são passados como parâmetro. Caso não exista nenhuma regra específica para algum dos valores, o conteúdo padrão pode ser utilizado como retorno. Caso não seja utilizado o ponto de entrada, o preenchimento dos campos continuará com a mesma regra, buscando as informações da tabela cadastro de produtos (SB1) campos: - Aliq. ICMS (B1_PICM) |
04. EXEMPLO DE UTILIZAÇÃO
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
User Function PRCCAT44() Local nCodigo := PARAMIXB[1] Local MV_IVAST := GetNewPar("MV_IVAST",0) Local nIVAP := 0 Local nAliqP := 0 Local nPrecFiP := 0 Local nPrecP := 0 Local cAliasSD1 := "SD1" Local aStruSD1 := {} Local cQuery := "" Local nY := 0 Local nX := 1 Local dDtIni := LastDay(mv_par02)+1 Local dDti := mv_par01 Local dDtf := mv_par02 dbSelectArea("SFK") If SFK->(MsSeek(xFilial('SFK')+nCodigo+Dtos(dDtIni))) nAliqP := Iif(!empty(SFK->FK_AICMS),SFK->FK_AICMS,0) EndIf dbSelectArea("SD1") For nX := 1 To 36 cAliasSD1 := "AliasSD1" aStruSD1 := SD1->(dbStruct()) cQuery := "SELECT D1_DOC,D1_FILIAL,D1_LOJA,D1_VUNIT " cQuery += "FROM " + RetSqlName("SD1") + " " cQuery += "WHERE D1_FILIAL = '" + xFilial("SD1") + "' AND " cQuery += "D1_COD = '" + nCodigo + "' AND " cQuery += "D1_DTDIGIT > '" + Dtos(dDti) + "' AND " cQuery += "D1_DTDIGIT <= '" + Dtos(dDtf) + "' AND " cQuery += "D1_TIPO = 'N' AND " cQuery += "D_E_L_E_T_= ' ' " cQuery += "ORDER BY D1_DTDIGIT DESC" cQuery := ChangeQuery(cQuery) dbUseArea(.T.,"TOPCONN",TcGenQry(,,cQuery),cAliasSD1,.T.,.T.) For nY := 1 To Len(aStruSD1) If ( aStruSD1[nY][2] <> "C" ) TcSetField(cAliasSD1,aStruSD1[nY][1],aStruSD1[nY][2],aStruSD1[nY][3],aStruSD1[nY][4]) EndIf Next nY If (cAliasSD1)->(EOF()) dbSelectArea(cAliasSD1) dbCloseArea() dDti := Ctod("01/"+ StrZero(Iif(Month(dDti)==1,12,Month(dDti) -1 ),2)+ "/" +StrZero(Iif(Month(dDti)==1 ,year(dDti)-1,year(dDti)),4), "ddmmyy") dDtf := LastDay(dDti) Else nPrecP := (cAliasSD1)->D1_VUNIT Exit EndIf Next nX nIVAP := MV_IVAST // Margem de Valor Agregadon PrecFiP := 0 // Preco Final dbCloseArea() Return ({nAliqP,nPrecP,nIVAP,nPrecFiP}) |
05. DEMAIS INFORMAÇÕES
Não se aplica.