Está relativamente fácil alterar, o difÃcil é decidir como.
Por parâmetro.... pode atrapalhar quando tem parâmetro opcional
Por arquivo de configuração... pode atrapalhar pra usar direto do MySQL sem acesso a disco
Por linha de comando.... idem
Talvez seja mais fácil alterar na sua cópia.
No método DefineColunasProdutos()
::aLayout[ LAYOUT_DESCONTO, LAYOUT_IMPRIME ] := LAYOUT_NAOIMPRIME
::aLayout[ LAYOUT_SUBBAS, LAYOUT_IMPRIME ] := LAYOUT_NAOIMPRIME
::aLayout[ LAYOUT_SUBVAL, LAYOUT_IMPRIME ] := LAYOUT_NAOIMPRIME
::aLayout[ LAYOUT_IPIVAL, LAYOUT_IMPRIME ] := LAYOUT_NAOIMPRIME
::aLayout[ LAYOUT_IPIALI, LAYOUT_IMPRIME ] := LAYOUT_NAOIMPRIME
::aLayout[ LAYOUT_IPIALI, LAYOUT_IMPRIME ] := LAYOUT_NAOIMPRIME
::aLayout[ LAYOUT_EAN, LAYOUT_IMPRIME ] := LAYOUT_NAOIMPRIME
// Define decimais default, mas será ajustado conforme conteúdo do XML
::aLayout[ LAYOUT_QTD, LAYOUT_DECIMAIS ] := 0
::aLayout[ LAYOUT_UNITARIO, LAYOUT_DECIMAIS ] := 2
FOR EACH oElement IN ::aLayout
oElement[ LAYOUT_LARGURA ] := Max( Len( oElement[ LAYOUT_TITULO1 ] ), Len( oElement[ LAYOUT_TITULO2 ] ) )
NEXT
nItem := 1
DO WHILE .T.
IF ! ::ProcessaItens( ::cXml, nItem )
EXIT
ENDIF
nItem += 1
::aLayout[ LAYOUT_QTD, LAYOUT_DECIMAIS ] := ::DefineDecimais( ::aItem[ "qCom" ], ::aLayout[ LAYOUT_QTD, LAYOUT_DECIMAIS ] )
::aLayout[ LAYOUT_UNITARIO, LAYOUT_DECIMAIS ] := ::DefineDecimais( ::aItem[ "vUnCom" ], ::aLayout[ LAYOUT_UNITARIO, LAYOUT_DECIMAIS ] )
FOR EACH oElement IN ::aLayout
oElement[ LAYOUT_LARGURA ] := Max( oElement[ LAYOUT_LARGURA ], Len( Eval( oElement[ LAYOUT_CONTEUDO ] ) ) )
oElement[ LAYOUT_LARGURAPDF ] := Max( oElement[ LAYOUT_LARGURAPDF ], ::LarguraTexto( Eval( oElement[ LAYOUT_CONTEUDO ] ) ) )
NEXT
IF Val( ::aItemIPI[ "pIPI" ] ) > 0 .OR. Val( ::aItemIPI[ "vIPI" ] ) > 0 // Se houver IPI no XML, habilita coluna
::aLayout[ LAYOUT_IPIVAL, LAYOUT_IMPRIME ] := LAYOUT_IMPRIMENORMAL
::aLayout[ LAYOUT_IPIALI, LAYOUT_IMPRIME ] := LAYOUT_IMPRIMENORMAL
ENDIF
IF Val( ::aItemICMS[ "vBCST" ] ) > 0 .OR. Val( ::aItemICMS[ "vICMSST" ] ) > 0
::aLayout[ LAYOUT_SUBBAS, LAYOUT_IMPRIME ] := LAYOUT_IMPRIMENORMAL
::aLayout[ LAYOUT_SUBVAL, LAYOUT_IMPRIME ] := LAYOUT_IMPRIMENORMAL
ENDIF
IF Val( ::aItem[ "vDesc" ] ) > 0
::aLayout[ LAYOUT_DESCONTO, LAYOUT_IMPRIME ] := LAYOUT_IMPRIMENORMAL
ENDIF
IF ! Empty( ::aItem[ "cEAN" ] )
::aLayout[ LAYOUT_EAN, LAYOUT_IMPRIME ] := LAYOUT_IMPRIMENORMAL
ENDIF
ENDDO
// Define tamanho de colunas
Pode decidir o melhor jeito, mas poderia ser antes dessa última linha, acrescentando esta:
::aLayout[ LAYOUT_EAN, LAYOUT_IMPRIME ] := LAYOUT_NAOIMPRIME
Ou omitindo esta linha/bloco:
IF ! Empty( ::aItem[ "cEAN" ] )
::aLayout[ LAYOUT_EAN, LAYOUT_IMPRIME ] := LAYOUT_IMPRIMENORMAL
ENDIF
Se eu tiver uma idéia de como facilitar isso, vou tentar uma terceira opção e permitir default:
LAYOUT_IMPRIMENAO
LAYOUT_IMPRIMENORMAL
LAYOUT_IMPRIMEAUTOMATICO
Como eu disse no inÃcio, o problema não é ajustar layout, o problema é como passar os parâmetros para a classe, sem criar novos problemas.