CUPOM-PRINTDOCUMENT

JOHNSTEVE 21/06/2017 20:49:34
#474650
Boa noite galera, hoje um cliente me chamou para tratarmos de um problema que aconteceu, que só percebi hoje quando aconteceu nesse cliente..
tipo é um Mercadinho... teve uma Feira que deu quase 50 Itens. blz.. a venda passou tranquilo.. total .. forma de pagamento bacana..

mais quando foi finalizar q impimiu o comprovante...... Xiiiiiiiiiiiiii deu Zebra..... não saiu todos os itens da venda, pensa so no problema....
veja no print.. No final da tarde de hj.. tive q pegar 50 produtos... e passa para ver qnd imprimisse... dai foi oq aconteceu mesmo... eu coloquei na impressora Virtual no DoPDF7.
para ver a impressão . tirei um print. e realmente so está imprimindo em 1 Pagina.. não deu continuidade a criar outra pagina na sequencia.. pois no final depois do ultimo Item.
tem as formas de pagamento. nome do Operador. e algumas informações em baixo..

Galera, gostaria de saber com algum de vcs. aconteceu isso. e se tem como Resolver, ta normal o codigo qnd os itens couber em 1 folha da certo.. agora se for muito itens.
que nesse caso deu Zebra.. quase 50 itens. que nao coube em 1 pagina.. e teria q ser em 2 paginas.. ai sim daria certo.

Agradeço desde de já a todos
JOHNSTEVE 21/06/2017 20:52:50
#474651
  e.Graphics.DrawString([Ô]----------------------------------------------------------------------------[Ô], minhafonte1, Brushes.Black, 15, 80)
e.Graphics.DrawString([Ô][**COMPROVANTE PARA CONFERÊNCIA**][Ô], minhafonte1, Brushes.Black, rect2, stringFormat)
e.Graphics.DrawString([Ô]- SEM VALOR FISCAL -[Ô], minhafonte1, Brushes.Black, rect3, stringFormat)
e.Graphics.DrawString([Ô]----------------------------------------------------------------------------[Ô], minhafonte1, Brushes.Black, 15, 120)

e.Graphics.DrawString([Ô]----------------------------------------------------------------------------[Ô], minhafonte1, Brushes.Black, 15, 210)

e.Graphics.DrawString([Ô]DESCRIÇÃO UND QTD UNITÁRIO TOTAL[Ô], minhafonte1, Brushes.Black, 15, 220)

e.Graphics.DrawString([Ô]----------------------------------------------------------------------------[Ô], minhafonte1, Brushes.Black, 15, 230)

[ô][ô]a estrutura de repetição abaixo é usada para impressão de todos os itens da lista
y = 240
For i = 1 To dgvProdutos.Rows.Count [ô]
e.Graphics.DrawString(Mid(dgvProdutos.Rows(i - 1).Cells(2).Value, 1, 39) & [Ô] - [Ô] & (dgvProdutos.Rows(i - 1).Cells([Ô]und_medida[Ô]).Value), minhafonte1, Brushes.Black, 15, y) [ô] AQUI PEGA A DESCRIÇÃO
y = y + 10
e.Graphics.DrawString(Format(CDec(dgvProdutos.Rows(i - 1).Cells(3).Value.ToString), [Ô]F0[Ô]), minhafonte1, Brushes.Black, New RectangleF(155, y, 28, minhafonte1.Height), sf) [ô] AQUI PEGA a QUANTIDADE
e.Graphics.DrawString(Format(CDec(dgvProdutos.Rows(i - 1).Cells(4).Value.ToString), [Ô]###,##0.00[Ô]), minhafonte1, Brushes.Black, New RectangleF(193, y, 33, minhafonte1.Height), sf) [ô] AQUI PEGA a VLR UNIT
e.Graphics.DrawString(dgvProdutos.Rows(i - 1).Cells(6).Value, minhafonte1, Brushes.Black, New RectangleF(225, y, 45, minhafonte1.Height), sf) [ô] AQUI PEGA a VLR total
y = y + 10
Next

e.Graphics.DrawString([Ô]----------------------------------------------------------------------------[Ô], minhafonte1, Brushes.Black, 15, y)
[ô]
y = y + 20
e.Graphics.DrawString([Ô]FORMA DE PAGAMENTO:[Ô], minhafonte1, Brushes.Black, 15, y)
e.Graphics.DrawString(FormaPagto, minhafonte1, Brushes.Black, New RectangleF(207, y, 60, minhafonte1.Height), sf)

If txt_tot_desconto.Text <> [Ô]0,00[Ô] Then
y = y + 10
e.Graphics.DrawString([Ô]SUBTOTAL R$:[Ô], minhafonte1, Brushes.Black, 15, y)
e.Graphics.DrawString(txtTotalPagar.Text, minhafonte1, Brushes.Black, New RectangleF(225, y, 45, minhafonte1.Height), sf)
End If

If txt_tot_desconto.Text <> [Ô]0,00[Ô] Then
y = y + 10
e.Graphics.DrawString([Ô]DESCONTOS R$:[Ô], minhafonte1, Brushes.Black, 15, y)
e.Graphics.DrawString(txt_tot_desconto.Text, minhafonte1, Brushes.Black, New RectangleF(225, y, 45, minhafonte1.Height), sf)
End If

y = y + 10
e.Graphics.DrawString([Ô]TOTAL A PAGAR R$:[Ô], minhafonte1, Brushes.Black, 15, y)
e.Graphics.DrawString(Total_formpgto, minhafonte1, Brushes.Black, New RectangleF(225, y, 45, minhafonte1.Height), sf)

If FormaPagto <> [Ô]03=A Prazo[Ô] Then
If ValorPago <> [Ô][Ô] Then
y = y + 10
e.Graphics.DrawString([Ô]VLR. PAGO R$:[Ô], minhafonte1, Brushes.Black, 15, y)
e.Graphics.DrawString(ValorPago, minhafonte1, Brushes.Black, New RectangleF(225, y, 45, minhafonte1.Height), sf)
End If

If Troco <> [Ô][Ô] Then
y = y + 10
e.Graphics.DrawString([Ô]TROCO R$:[Ô], minhafonte1, Brushes.Black, 15, y)
e.Graphics.DrawString(Troco, minhafonte1, Brushes.Black, New RectangleF(225, y, 45, minhafonte1.Height), sf)
End If
End If

y = y + 20
e.Graphics.DrawString([Ô]----------------------------------------------------------------------------[Ô], minhafonte1, Brushes.Black, 15, y)

If FormaPagto = [Ô]03=A Prazo[Ô] Then
y = y + 20
e.Graphics.DrawString([Ô]***** VENDA À PRAZO - NOTA PROMISSÓRIA *****[Ô], minhafonte1, Brushes.Black, 15, y)

y = y + 10
e.Graphics.DrawString([Ô]Autorizo a utilização deste cupom como NOTA[Ô], minhafonte1, Brushes.Black, 15, y)

y = y + 10
e.Graphics.DrawString([Ô]PROMISSÓRIA, e pagarei a quantia de: [Ô] & Total_formpgto, minhafonte1, Brushes.Black, 15, y)

y = y + 10
e.Graphics.DrawString([Ô]no dia: [Ô] & Mid(Venc.ToString, 1, 10), minhafonte1, Brushes.Black, 15, y)

y = y + 50
e.Graphics.DrawString([Ô]----------------------------------------------------------------------------[Ô], minhafonte1, Brushes.Black, 15, y)

y = y + 10
e.Graphics.DrawString([Ô] ASSINATURA DO CLIENTE [Ô], minhafonte1, Brushes.Black, 15, y)
End If


y = y + 10
e.Graphics.DrawString([Ô]PDV: [Ô] & Caixa_NaoFiscal & [Ô] USUARIO: 00[Ô] & strIDusuario & [Ô] VENDA: [Ô] & Format(CInt(lblNumero_NFe.Text), [Ô]00000[Ô]), minhafonte1, Brushes.Black, 15, y)
[ô]
y = y + 20
e.Graphics.DrawString([Ô] VOLTE SEMPRE!!! [Ô], minhafonte1, Brushes.Black, 15, y)
NILSONTRES 21/06/2017 22:39:59
#474654
Resposta escolhida
Então, mas cupom de venda com print ? Isso não da certo, tem que ser tipo porta com, Matricial, nada que conte paginas, a não ser Nfe danfe., pode ter muitos itens uma venda.
Em vb.net o ideal é vc escrever em arquivo e mandar para a impressora, matricial, termica com dll ou sem.
MOREIRA 21/06/2017 23:05:13
#474656
Citação:

:
Então, mas cupom de venda com print ? Isso não da certo, tem que ser tipo porta com, Matricial, nada que conte paginas, a não ser Nfe danfe., pode ter muitos itens uma venda.
Em vb.net o ideal é vc escrever em arquivo e mandar para a impressora, matricial, termica com dll ou sem.


Amigo, aproveitando o tópico. Teria como exemplificar ?
NILSONTRES 22/06/2017 09:12:04
#474661
Public Shared Function IMPRIMI_DIRETO_COMANDA(ByVal _NumComanda As Integer) As String
Try
SQL_COMANDAS.List([Ô]Select *From nag_comandas Where CodComanda=[Ô] & _NumComanda & [Ô][Ô])
SQL_COMANDAS_ITENS.List([Ô]Select *From nag_comandas_itens Where Cod_Comanda=[Ô] & _NumComanda & [Ô][Ô])

Dim _NomeArq As String = My.Application.Info.DirectoryPath & [Ô]\PrintGen.txt[Ô]
Dim sw As New IO.StreamWriter(_NomeArq)
Dim V_POS As Integer = (42 - Len(Mid(Removeacentos(CupomEmitente_Sat_Emitente), 1, 40))) / 2

sw.WriteLine(ESPECIFICOS(1))
sw.WriteLine(ALINHAMENTO(1))
sw.WriteLine(Removeacentos(CupomEmitente_Sat_Emitente))
[ô]sw.WriteLine(ESPECIFICOS(2))
sw.WriteLine(FONTE(0))
sw.WriteLine(TRACEJOS(1, 0))
[ô]**CABEÇA**
sw.WriteLine(ALINHAMENTO(1))
sw.WriteLine(Space(0) & [Ô]COMANDA: [Ô] & String.Format([Ô]{0:00000000}[Ô], Int32.Parse(_NumComanda)) & Space(1) & _ListComandas.Item(0).Data_Comanda & Space(1) & _ListComandas.Item(0).Hora_Comanda & IIf(_ListComandas.Item(0).Vendedor_Cod = 0, [Ô][Ô], [Ô] VEND [Ô] & _ListComandas.Item(0).Vendedor_Cod))
sw.WriteLine(TRACEJOS(1, 0))
[ô]sw.WriteLine(Space(0) & Removeacentos(CupomEmitente_Sat_FRASE_FISCAL))
If _ListComandas.Item(0).Cliente_Cod <> 0 Then
sw.WriteLine(Space(0) & [Ô]CLIENTE: [Ô] & Space(0) & _ListComandas.Item(0).Cliente_Cod & [Ô] [Ô] & Removeacentos(_ListComandas.Item(0).Cliente))
End If
If _ListComandas.Item(0).Entrega = 1 Then [ô]ENTREGA
sw.WriteLine(TRACEJOS(1, 0))
sw.WriteLine(ALINHAMENTO(0))
sw.WriteLine(Space(0) & [Ô]DADOS PARA ENTREGA[Ô])
sw.WriteLine(Space(0) & [Ô]END: [Ô] & Space(0) & Removeacentos(_ListComandas.Item(0).Logradouro) & [Ô], [Ô] & _ListComandas.Item(0).Numero & [Ô] - [Ô] & Removeacentos(_ListComandas.Item(0).Complemento))
sw.WriteLine(Space(0) & Removeacentos(_ListComandas.Item(0).Bairro) & [Ô] - [Ô] & Removeacentos(_ListComandas.Item(0).Municipio) & [Ô]-[Ô] & Removeacentos(_ListComandas.Item(0).UF) & [Ô] - Fone: [Ô] & Removeacentos(_ListComandas.Item(0).Fones))
End If

sw.WriteLine(ALINHAMENTO(0))

Dim IT As Integer = 0

For IT = 0 To _ListComandasItens.Count - 1
sw.WriteLine(Space(0) & String.Format([Ô]{0:000}[Ô], Int32.Parse(_ListComandasItens(IT).Item)) & Space(5 - Len(_ListComandasItens(IT).Item)) & [Ô]-[Ô] & _ListComandasItens(IT).Cod_Bar & Space(18 - Len(_ListComandasItens(IT).Cod_Bar)) & Removeacentos(Mid(_ListComandasItens(IT).Produto.ToString, 1, 36)))
[ô]sw.WriteLine(Space(0) & String.Format([Ô]{0:000}[Ô], Int32.Parse(_ListComandasItens(IT).Item)) & Space(5 - Len(_ListComandasItens(IT).Item)) & [Ô] [Ô] & Removeacentos(Mid(_ListComandasItens(IT).Produto.ToString, 1, 36)))
If V_DESCONTO_ITEM(IT) > 0 Then
sw.WriteLine(Space(11) & _ListComandasItens(IT).Tipo_Fracao & [Ô] [Ô] & FormatNumber(_ListComandasItens(IT).Vlr_Unit, 2).PadLeft(9) & Space(1) & [Ô]X[Ô] & Space(1) & _ListComandasItens(IT).QTD & Space(9 - Len(_ListComandasItens(IT).QTD)) & Space(1) & FormatNumber([Ô]-[Ô] & _ListComandasItens(IT).Vlr_Desc, 2).PadLeft(8) & Space(1) & FormatNumber(_ListComandasItens(IT).Vlr_Tot_Item, 2).PadLeft(8))
Else
sw.WriteLine(Space(11) & _ListComandasItens(IT).Tipo_Fracao & [Ô] [Ô] & FormatNumber(_ListComandasItens(IT).Vlr_Unit, 2).PadLeft(9) & Space(1) & [Ô]X[Ô] & Space(1) & _ListComandasItens(IT).QTD & Space(9 - Len(_ListComandasItens(IT).QTD)) & Space(1) & FormatNumber(_ListComandasItens(IT).Vlr_Tot_Item, 2).PadLeft(8))
End If

[ô]sw.WriteLine(Space(0) & V_ITEM(IT) & Space(4 - Len(V_ITEM(IT))) & V_COD_BAR(IT) & Space(15 - Len(V_COD_BAR(IT))) & FormatNumber(V_VLR_UNIT(IT), 2).PadLeft(9) & Space(1) & [Ô]X[Ô] & Space(1) & V_QTD(IT) & Space(9 - Len(V_QTD(IT))) & Space(1) & FormatNumber(V_VLR_SUBTOTAL(IT), 2).PadLeft(9))
[ô]sw.WriteLine(Space(0) & Removeacentos(V_DESCRICAO(IT)))
Next


[ô]sw.WriteLine([Ô][Ô])
sw.WriteLine(TRACEJOS(1, 0))
sw.WriteLine(ALINHAMENTO(0))

If CType(_ListComandas.Item(0).Vlr_Desc, Double) <> 0 Then
sw.WriteLine(Space(0) & [Ô]S.TOT > [Ô] & FormatNumber(_ListComandas.Item(0).Vlr_Sub_Tot, 2).PadLeft(9))
sw.WriteLine(Space(0) & [Ô]DESC > [Ô] & FormatNumber(_ListComandas.Item(0).Vlr_Desc, 2).PadLeft(9))
End If
sw.WriteLine(Space(0) & [Ô]TOTAL > [Ô] & FormatNumber(_ListComandas.Item(0).Vlr_Tot, 2).PadLeft(9))
sw.WriteLine([Ô][Ô])
If _ListComandas.Item(0).Obs.Trim <> [Ô][Ô] Then
sw.WriteLine(Space(0) & [Ô]OBS:[Ô] & Removeacentos(_ListComandas.Item(0).Obs))
End If
sw.WriteLine([Ô][Ô])
sw.WriteLine([Ô]************** SEM VALOR FISCAL ***************[Ô])
sw.WriteLine(ESPECIFICOS(1))
Dim i As Int32
For i = 0 To V_AVANCO_IMPRESSORA - 1
sw.WriteLine([Ô][Ô])
Next
[ô]sw.WriteLine(Chr(27) & [Ô]v[Ô] & Chr(100)) [ô]abrir gaveta elgin
sw.WriteLine(CORTE)
sw.Flush()
sw.Close()

If V_IMPRIMI_CUPOM = 1 Then
Return ImprimiCom.Imprimi(_NomeArq)
Else
Return [Ô][Ô]
End If

Catch
MsgBox(Err.Description & vbCrLf & Err.GetException.StackTrace, MsgBoxStyle.Critical, [Ô]IMPRIMI_DIRETO_TIPO1[Ô])
Return [Ô]ERRO[Ô]
End Try
End Function


*******************imprimi na porta com
Public Shared Function Imprimi(ByVal StringArquivo As String) As String
Try

Dim PortaCom As SerialPort = New SerialPort(PortaImpressora, VelocidadeImpressora, Parity.None, 8, StopBits.One)
PortaCom.RtsEnable = True
PortaCom.WriteTimeout = 1000
Try
PortaCom.Open()
Catch
[ô]MsgBox([Ô]Erro ao abrir porta serial, Nome da Porta: [Ô] & PortaImpressora, MsgBoxStyle.Critical, [Ô]AVISO - Print_Daruma[Ô])
Return [Ô]Erro ao abrir porta serial, Nome da Porta: [Ô] & PortaImpressora & vbCrLf & Err.Description
End Try

Dim Retorno() As Byte = New Byte((ConteudoImprimi.Length) - 1) {}
Dim i As Integer = 0
Do While (i < ConteudoImprimi.Length)
Retorno(i) = Convert.ToByte(ConteudoImprimi(i))
i = (i + 1)
Loop
PortaCom.Write(Retorno, 0, ConteudoImprimi.Length)
PortaCom.Close()
Return [Ô][Ô]


Catch
MsgBox(Err.Description & vbCrLf & Err.GetException.StackTrace, MsgBoxStyle.Critical, [Ô]IMPRIMI[Ô])
End Try
End Function
Tópico encerrado , respostas não são mais permitidas