× Linguagem de Programação ADVPL

Perguntas Impreessa de etiquetas

Mais
2 anos 2 meses atrás #33256 por JRTchula
Boa tarde.
desenvolvi um fonte para impressão de etiquetas de produção. Uso a impressora DATAMAX. Esta imprimindo tudo blz mas quando mando imprimir uma quantidade grande de etiquetas, as etiquetas começam a sair do esquadro. O que posso fazer para que a impressora não tire a etiqueta do enquadramento. Obs se eu imprimir via Windows as etiqueta imprimem normal sem sair do enquadramento.

Segue meu fonte.

User Function xEtqpclo()

//Fontes
Local cFontUti := "Tahoma"
Local oFontSubN := TFont():New(cFontUti,,-20,,.T.)
Local oFontBtn := TFont():New(cFontUti,,-10)

Local oDlg
Local oGet, oGet1, oGet2, oGet3
Local oSay, oSay1, oSay2, oSay3, oSay4, oSay5
Local cLote := Space(25)
Local nQtda := 0
Local nQtdai := 0
Local nQtdaf := 0


DEFINE MSDIALOG oDlg TITLE "Etiqueta Produção Clover" FROM 000, 000 TO 350, 300 COLORS 0, 16777215 PIXEL

@ 005, 015 SAY oSay PROMPT "DADOS PARA ETIQUETA" SIZE 300, 020 FONT oFontSubN OF oDlg COLORS 0, 16777215 PIXEL
@ 030, 015 SAY oSay1 PROMPT "Nº Lote:" SIZE 065, 010 FONT oFontBtn OF oDlg COLORS 0, 16777215 PIXEL
@ 060, 015 SAY oSay2 PROMPT "Qtad. Etq.:" SIZE 030, 010 FONT oFontBtn OF oDlg COLORS 0, 16777215 PIXEL
@ 025, 055 Get oGet Var cLote SIZE 60,15 OF oDlg PIXEL
@ 055, 055 Get oGet1 Var nQtda PICTURE "999" SIZE 40,15 OF oDlg PIXEL

@ 090, 020 SAY oSay3 PROMPT "DADOS ETQ. MANUAL" SIZE 300, 020 FONT oFontSubN OF oDlg COLORS 0, 16777215 PIXEL

@ 120, 015 SAY oSay4 PROMPT "De :" SIZE 030, 010 FONT oFontBtn OF oDlg COLORS 0, 16777215 PIXEL
@ 115, 030 Get oGet2 Var nQtdai PICTURE "@E 999" SIZE 40,15 OF oDlg PIXEL

@ 120, 080 SAY oSay5 PROMPT " Até :" SIZE 030, 010 FONT oFontBtn OF oDlg COLORS 0, 16777215 PIXEL
@ 115, 095 Get oGet3 Var nQtdaf PICTURE "@E 999" SIZE 40,15 OF oDlg PIXEL

@ 150, 030 BUTTON oFontBtn PROMPT "Imprimir" SIZE 037, 012 OF oDlg PIXEL Action (xNetq(cLote,nQtda, nQtdai, nQtdaf))
@ 150, 090 BUTTON oFontBtn PROMPT "Fechar" SIZE 037, 012 OF oDlg PIXEL Action oDlg:End()

ACTIVATE MSDIALOG oDlg CENTERED

Return

Static Function xNetq(cLote, nQtda, nQtdai, nQtdaf)

Local cQry := ""
Local cLote1 := ALLTRIM(cLote)
Local nCount := 0
Local cPorta := "LPT1" // Mapeamento feito através de NET USE
Local cModelo := "DMX"
Local cRot := "B"

cQry := " SELECT" + CRLF
cQry += " SC2.C2_PRODUTO " + CRLF
cQry += " ,SC2.C2_XDESCRI " + CRLF
cQry += " ,SC2.C2_XLOTE " + CRLF
cQry += " ,CONVERT(VARCHAR(10), CAST(SC2.C2_XDTFAB AS DATE), 103) AS FABRICACAO " + CRLF
cQry += " ,CONVERT(VARCHAR(10), CAST(SC2.C2_XDTVALD AS DATE), 103) AS VALIDADE " + CRLF
cQry += " ,(SB1.B1_PESO * SB5.B5_QE1) AS PLIQUIDO " + CRLF
cQry += " ,(SB1.B1_PESBRU * SB5.B5_QE1) AS PBURTO " + CRLF
cQry += " ,SB5.B5_QE1 " + CRLF
cQry += " FROM " +RetSqlName("SC2")+ " SC2(NOLOCK), " + CRLF
cQry += " " +RetSqlName("SB1")+ " SB1(NOLOCK), " + CRLF
cQry += " " +RetSqlName("SB5")+ " SB5(NOLOCK) " + CRLF
cQry += " WHERE SC2.C2_XLOTE = '" + ALLTRIM(cLote1) + "'" + CRLF
cQry += " AND SB1.B1_COD = SC2.C2_PRODUTO " + CRLF
cQry += " AND SB5.B5_COD = SC2.C2_PRODUTO " + CRLF
cQry += " AND SC2.D_E_L_E_T_ = '' " + CRLF

If Select("LTO") > 0
Dbselectarea("LTO")
LTO->(DbClosearea())
EndIf

TcQuery cQry New Alias "LTO"

//Variaveis para etiqueta que vem da query
_cCod := ALLTRIM(LTO->C2_PRODUTO)
_cDescri := ALLTRIM(LTO->C2_XDESCRI)
_dFabri := ALLTRIM(LTO->FABRICACAO)
_dValid := ALLTRIM(LTO->VALIDADE)
_cPliq := TRANSFORM(LTO->PLIQUIDO, '@E 999.999')
_cPbrut := TRANSFORM(LTO->PBURTO, '@E 999.999')
_nQtdcx := TRANSFORM(LTO->B5_QE1, '@E 999.999')
_nQtda1 := nQtda
_nQtda2 := nQtdai
_nQtda3 := nQtdaf

if _nQtda1 > 0

//IMPRESSÃO ETIQUETA AUTOMATICA
FOR nCount := 1 TO _nQtda1

MSCBPRINTER(cModelo, cPorta,,10,.F.,,,,,,.F.,)
MSCBCHKSTATUS(.F.)

//Quantidade de etiquetas a serem impressa e tamanho da etiqueta(largura)
MSCBBEGIN(,6,95)
nLin1 := 28
nLin := 43

//Cabeçalho etiqueta
MSCBSAY(nLin1,30,"CLOVER DO BRASIL ", cRot,"3","01,02")
nLin1 += 4
MSCBSAY(nLin1,10,"CNPJ:28.061.891/0001-05 ", cRot,"2","01,01")
MSCBSAY(nLin1,50,"IE: 373.181.452.118 ", cRot,"2","01,01")
nLin1 += 4
MSCBSAY(nLin1,08,"FARMACEUTICA RESP.: FABIANA MITELMAO CRF/SP 23820 ", cRot,"2","01,01")

MSCBLineV(38,01,90,2)

//String a ser impressa na etiqueta
MSCBSAY(nLin,01,"CODIGO: ", cRot,"2","01,01")
MSCBSAY(nLin,13,_cCod, cRot,"3","01,01")
nLin += 07
MSCBSAY(nLin,01,"PRODUTO: ", cRot,"2","01,01")
MSCBSAY(nLin,15, _cDescri , cRot,"2","01,01")
nLin += 07
MSCBSAY(nLin,01,"LOTE: ", cRot,"2","01,01")
MSCBSAY(nLin,13, cLote1 , cRot,"3","01,01")
MSCBSAY(nLin,40,"QTDA. CX.: ", cRot,"2","01,01")
MSCBSAY(nLin,54, _nQtdcx , cRot,"3","01,01")
nLin += 07
MSCBSAY(nLin,01,"FABRICACAO: ", cRot,"2","01,01")
MSCBSAY(nLin,18, _dFabri , cRot,"3","01,01")
MSCBSAY(nLin,50,"VALIDADE: ", cRot,"2","01,01")
MSCBSAY(nLin,64, _dValid , cRot,"3","01,01")
nLin += 7
MSCBSAY(nLin,01,"P.LIQUIDO: ", cRot,"2","01,01")
MSCBSAY(nLin,18, _cPliq , cRot,"3","01,01")
MSCBSAY(nLin,40,"P.BRUTO: ", cRot,"2","01,01")
MSCBSAY(nLin,54,_cPbrut , cRot,"3","01,01")
nLin += 10
MSCBSAY(nLin,01,"Nº ETQ.: ", cRot,"2","01,01")
MSCBSAY(nLin,15, TRANSFORM(nCount, '@e 999') , cRot,"2","01,01")
MSCBSAYBAR(nLin,40, ALLTRIM(cLote) ,"B","MB07",8,.F.,.F., .F. , cRot , 3 , 2 , .F., .T.)

MSCBInfoEti("Etq Colver", "9.5x6.9")


//Finalização da etiqueta
MSCBEND()

//Impressão
MSCBCLOSEPRINTER()

NEXT nCount

else

//IMPRESSÃO ETIQUETA MANUAL
FOR nCount := nQtdai TO nQtdaf

MSCBPRINTER(cModelo, cPorta,,10,.F.,,,,,,.F.,)
MSCBCHKSTATUS(.F.)

//Quantidade de etiquetas a serem impressa e tamanho da etiqueta(largura)
MSCBBEGIN(,6,95)
nLin1 := 25
nLin := 40

//Cabeçalho etiqueta
MSCBSAY(nLin1,30,"CLOVER DO BRASIL ", "B","3","01,02")
nLin1 += 4
MSCBSAY(nLin1,10,"CNPJ:28.061.891/0001-05 ", "B","2","01,01")
MSCBSAY(nLin1,50,"IE: 373.181.452.118 ", "B","2","01,01")
nLin1 += 4
MSCBSAY(nLin1,10,"RESP. TECNICA: FABIANA MITELMAO ", "B","2","01,01")

MSCBLineV(35,01,90,2)

//String a ser impressa na etiqueta
MSCBSAY(nLin,03,"CODIGO: ", "B","2","01,01")
MSCBSAY(nLin,17,_cCod, "B","3","01,01")
nLin += 07
MSCBSAY(nLin,03,"PRODUTO: ", "B","2","01,01")
MSCBSAY(nLin,17, _cDescri , "B","2","01,01")
nLin += 07
MSCBSAY(nLin,03,"LOTE: ", "B","2","01,01")
MSCBSAY(nLin,17, cLote1 , "B","3","01,01")
MSCBSAY(nLin,50,"QTDA. CX.: ", "B","2","01,01")
MSCBSAY(nLin,64, _nQtdcx , "B","3","01,01")
nLin += 07
MSCBSAY(nLin,03,"FABRICACAO: ", "B","2","01,01")
MSCBSAY(nLin,20, _dFabri , "B","3","01,01")
MSCBSAY(nLin,50,"VALIDADE: ", "B","2","01,01")
MSCBSAY(nLin,64, _dValid , "B","3","01,01")
nLin += 7
MSCBSAY(nLin,03,"P.LIQUIDO: ", "B","2","01,01")
MSCBSAY(nLin,20, _cPliq , "B","3","01,01")
MSCBSAY(nLin,50,"P.BRUTO: ", "B","2","01,01")
MSCBSAY(nLin,64,_cPbrut , "B","3","01,01")
nLin += 10
MSCBSAY(nLin,03,"Nº ETQ.: ", "B","2","01,01")
MSCBSAY(nLin,17, TRANSFORM(nCount, '@e 999') , "B","2","01,01")
MSCBSAYBAR(nLin,50, ALLTRIM(cLote) ,"B","MB07",8,.F.,.F., .F. , "B" , 4 , 2 , .F., .T.)


//Finalização da etiqueta
MSCBEND()

//Impressão
MSCBCLOSEPRINTER()

NEXT nCount



endif


Return

Se alguém puder me ajudar agradeço.

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.094 segundos
Joomla templates by a4joomla