Árvore de páginas

Versões comparadas

Chave

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

...

#include 'protheus.ch'

User function Function LOCXCONCEP()
Local cArea := GetArea()
Local cCodProd := PARAMIXB[1] // Código del producto.
Local aDetFac := {"","",0,"","",""} // Arreglo que contiene la información del producto.
/*
aDetFac[1] := ClaveProdSer
aDetFac[2] := No. Identificación
aDetFac[3] := Cantidad
aDetFac[4] := ClaveUnidad
aDetFac[5] := Unidad
aDetFac[6] := Descripcion
*/

aDetFac[2] := AllTrim(SA1-> A1_IDENT)
aDetFac[6] := AllTrim(SA1 -> A1_IDENT)

...

#include 'protheus.ch'

User function Function LOCXCONCEP()
Local cArea := GetArea()
Local cCodProd := PARAMIXB[1] // Código del producto.
Local aDetFac := {"","","","","",""} // Arreglo que contiene la información del producto.
/*
aDetFac[1] := ClaveProdSer
aDetFac[2] := No. Identificación
aDetFac[3] := Cantidad
aDetFac[4] := ClaveUnidad *Si es nulo omitir el atributo Unidad
aDetFac[5] := Unidad
aDetFac[6] := Descripcion
*/

DbSelectArea("SB1")
SB1->(dbSetorder(1)) // B1_FILIAL + B1_COD
SB1->(Dbseek(XFilial("SB1")+cCodProd))
aDetFac[2] := AllTrim(SB1-> B1_ID)
aDetFac[6] := AllTrim(SB1 -> B1_ID)

...

#include 'protheus.ch'

User function Function LOCXCONCEP()
Local cArea := GetArea()
Local cCodProd := PARAMIXB[1] // Código del producto.
Local cItem := PARAMIXB[2] // Número del Item.
Local aDetFac := {"","","","","",""} // Arreglo que contiene la información del producto.
Local nRecSD2 := 0

/*
aDetFac[1] := ClaveProdSer
aDetFac[2] := No. Identificación
aDetFac[3] := Cantidad
aDetFac[4] := ClaveUnidad *Si es nulo omitir el atributo Unidad
aDetFac[5] := Unidad
aDetFac[6] := Descripcion
*/

BeginSQL Alias "SD2TMP"
SELECT D2_ITEM,D2_DESCRI
FROM %Table:SD2% SD2
WHERE SD2.D2_FILIAL = %xFilial:SD2%
AND SD2.D2_SERIE = %Exp:SF2->F2_SERIE%
AND SD2.D2_DOC = %Exp:SF2->F2_DOC%
AND SD2.D2_CLIENTE = %Exp:SF2->F2_CLIENTE%
AND SD2.D2_LOJA = %Exp:SF2->F2_LOJA%
AND SD2.D2_TIPO = %Exp:SF2->F2_TIPO%
AND SD2.%NotDel%
EndSQL

DbSelectArea("SD2TMP")
While !SD2TMP ->(Eof())
if If AllTrim(SD2TMP -> D2_ITEM) == AllTrim(cItem)
aDetFac[6] := AllTrim(SD2TMP -> D2_DESCRI)
EndIf
SD2TMP -> (dbskip())
EndDo

SD2TMP ->(dbCloseArea())

...

NOTA: Cabe mencionar que al momento de la ejecución del punto de entrada, se puede posicionar en acceder a algunas tablas como la de Clientes (SA1), ProductosProductos (SB1), Items de facturafactura (SD2 | / SD1), por lo que se podrán utilizar campos que ya existen de estas tablas  tablas o campos nuevos que sean agregados y definir la regla para el armado del de los atributos del nodo Conceptos.

Para la tabla las tablas de Items de facturafactura (SD2 | y SD1), se recomienda apegarse al ejemplo descrito y usar la instrucción BeginSql para sql embebido usando SQL embebido (BeginSql ... EndSql)ya que las instrucciones como DbSetOrder() y DbSeek() sobre tales tablas, causan conflicto por el uso de un archivo temporal para la construcción del archivo XML.


Card documentos
InformacaoEn el Punto de Entrada LOCXCONCEP el contenido de cada una de los campos en el arreglo aDetFac debe cumplir con lo establecido en el Anexo 20 Guía de llenado de los comprobantes fiscales digitales por Internet, referente a los atributos del nodo Conceptos considerando que dicha guía puede ser modificada en cualquier momento por el SAT.
Titulo¡IMPORTANTE!

...