Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Revertida da versão 16

...

El Punto de Entrada LOCXCONCEP recibe 1 parámetro2 parámetros, que es la concatenación del el código del producto y el número del item y el código del producto, debe retornar un arreglo que contiene todos los campos que se pueden modificar a nivel ítem.

...

User function LOCXCONCEP()
Local cArea := GetArea()
Local cCodProd := PARAMIXB[1] // Item+ 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)

...

User function LOCXCONCEP()
Local cArea := GetArea()
Local cCodProd := PARAMIXB[1] // Item+ 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
*/
//Realizar tratamiento conforme tamaño del campo DX_ITEM
cItem := SubStr(cCodProd,1,4)
cCod := SubStr(cCodProd,5)
DbSelectArea("SB1")
SB1->(dbSetorder(1)) // B1_FILIAL + B1_COD
SB1->(Dbseek(XFilial("SB1")+cCodcCodProd))
aDetFac[2] := AllTrim(SB1-> B1_ID)
aDetFac[6] := AllTrim(SB1 -> B1_ID)

...

User function LOCXCONCEP()
Local cArea := GetArea()
Local cCodProd := PARAMIXB[1] // Item+ 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
*/
//Realizar tratamiento conforme tamaño del campo D2_ITEM
cItem := SubStr(cCodProd,1,2)
cCod := SubStr(cCodProd,3)

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 AllTrim(SD2TMP -> D2_ITEM) == AllTrim(cItem)
aDetFac[6] := AllTrim(SD2TMP -> D2_DESCRI)
EndIf
SD2TMP -> (dbskip())
EndDo

SD2TMP ->(dbCloseArea())

RestArea(cArea)
Return aDetFac

Ejemplo 4: Búsqueda en tabla SD1 

#include 'protheus.ch'

User function LOCXCONCEP()
Local cArea := GetArea()
Local cCodProd := PARAMIXB[1] // Item+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
*/
//Realizar tratamiento conforme tamaño del campo D1_ITEM
cItem := SubStr(cCodProd,1,4)
cCod := SubStr(cCodProd,5)BeginSQL Alias "SD1TMP"
SELECT D1_ITEM,D1_DESCRI
FROM %Table:SD1% SD1
WHERE SD1.D1_FILIAL = %xFilial:SD1%
AND SD1.D1_SERIE = %Exp:SF1->F1_SERIE%
AND SD1.D1_DOC = %Exp:SF1->F1_DOC%
AND SD1.D1_FORNECE = %Exp:SF1->F1_FORNECE%
AND SD1.D1_LOJA = %Exp:SF1->F1_LOJA%
AND SD1.D1_TIPO = %Exp:SF1->F1_TIPO%
AND SD1.%NotDel%
EndSQL
DbSelectArea("SD1TMP")
While !SD1TMP ->(Eof())
if AllTrim(SD1TMP -> D1_ITEM) == AllTrim(cItem)
aDetFac[6] := AllTrim(SD1TMP -> D1_DESCRI)
EndIf
SD1TMP -> (dbskip())
EndDo
SD1TMP ->(dbCloseArea())

RestArea(cArea)

Return aDetFac

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

Para la tabla de Items de factura(SD2|SD1) ,se recomienda apegarse al ejemplo descrito y usar la instrucción BeginSql para sql embebido , ya que las instrucciones como DbSetOrder y DbSeek causan conflicto por el uso de un archivo temporal.

...