AJUDA COM IMPRESSÃO DE CARNE
Alguém sabe uma rotina para impressão de carne para pagamento de escola. Deve gerar 1 carne para cada mês do ano ou uma quantidade qualquer de carnes.
Agradeço desde já!
Agradeço desde já!
google
Citação::
Eu procurei, mas não achei nada que posso utilizar!
vou te passar um modelinho....
ADAPTA a sua necessidade ai, esse carnê imprime 2 vias
Eu gero a partir de um datatable os dados, mas ai vc vê como faz
se faltar alguma variavel tu me avisa.
ADAPTA a sua necessidade ai, esse carnê imprime 2 vias
Eu gero a partir de um datatable os dados, mas ai vc vê como faz
se faltar alguma variavel tu me avisa.
DataTable myLista = new DataTable();
int QtdParcelas = 0;
PrintDocument printDocument1 = new PrintDocument();
private string _CodigoCab = [Ô][Ô];
int RegistroAtual = 0;
int PaginaAtual = 0;
public void ImprimeCarne(string CodigoCab)
{
_CodigoCab = CodigoCab;
PaginaAtual = 0;
StringBuilder nSQL = new StringBuilder()
.Append([Ô]SELECT C.Nome AS Cliente, C.CPF, VC.NumeroCupom AS Contrato, VCP.DataVcto, VCP.ValorParc, VCP.ValorPgto [Ô])
.Append([Ô]FROM VendasCrediarioParcelas AS VCP INNER JOIN [Ô])
.Append([Ô]VendasCab AS VC ON VCP.CodigoCab = VC.Codigo INNER JOIN [Ô])
.Append([Ô]Clientes AS C ON VC.IDCliente = C.Codigo [Ô])
.Append([Ô]WHERE VC.Codigo=[Ô]).Append(CodigoCab)
.Append([Ô]ORDER BY VC.Codigo [Ô]);
myLista = myGlobal.ConsultaListaDT(nSQL.ToString());
QtdParcelas = myLista.Rows.Count;
if (myGlobal.myConfig.Impressao.ImpressoraA4.Length==0)
{
MessageBox.Show([Ô]Impressora A4 não configurada.[Ô], [Ô][Ô], MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
printDocument1.PrinterSettings.PrinterName = myGlobal.myConfig.Impressao.ImpressoraA4;
this.printDocument1.PrintPage += new PrintPageEventHandler(this.printCarne_PrintPage);
printDocument1.Print();
}
private void printCarne_PrintPage(object sender, PrintPageEventArgs e)
{
string Cliente = [Ô][Ô];
e.Graphics.Clear(Color.White);
int PosY = 50;
Font myFont = new Font([Ô]Gautami[Ô], 10);
int QtdporPagina = 0;
for (int i = RegistroAtual; i < QtdParcelas; i++)
{
e.Graphics.DrawRectangle(new Pen(Color.Black, 2), 50, PosY, 350, 220);
e.Graphics.DrawRectangle(new Pen(Color.Black, 2), 425, PosY, 350, 220);
if (Cliente.Length > 34) Cliente = myLista.Rows[i][[Ô]Cliente[Ô]].ToString().Substring(0, 34);
e.Graphics.DrawString(Cliente.ToUpper(), new Font([Ô]Gautami[Ô], 12, FontStyle.Bold), Brushes.Black, 50, PosY + 25);
e.Graphics.DrawString([Ô]CLIENTE:[Ô], myFont, Brushes.Black, 50, PosY + 5);
//e.Graphics.DrawLine(new Pen(Brushes.Black, 2), 50, PosY + 10, 400, PosY + 10);
e.Graphics.DrawString(Cliente.ToUpper(), new Font([Ô]Gautami[Ô], 12, FontStyle.Bold), Brushes.Black, 425, PosY + 25);
e.Graphics.DrawString([Ô]CLIENTE:[Ô], myFont, Brushes.Black, 425, PosY + 5); PosY += 55;
e.Graphics.DrawLine(new Pen(Brushes.Black, 2), 425, PosY + 10, 775, PosY + 10);
//******************************************************************************************************************
int Contrato = Convert.ToInt32(myLista.Rows[i][[Ô]Contrato[Ô]].ToString()).ToString([Ô]000000[Ô]);
e.Graphics.DrawString(Contrato, myFont, Brushes.Black, 50, PosY + 35);
e.Graphics.DrawString(Contrato, myFont, Brushes.Black, 425, PosY + 35);
e.Graphics.DrawString([Ô]Contrato:[Ô], myFont, Brushes.Black, 50, PosY + 10);
e.Graphics.DrawString([Ô]Contrato:[Ô], myFont, Brushes.Black, 425, PosY + 10);
e.Graphics.DrawLine(new Pen(Brushes.Black, 2), 50, PosY + 10, 400, PosY + 10);
e.Graphics.DrawLine(new Pen(Brushes.Black, 2), 425, PosY + 10, 775, PosY + 10);
e.Graphics.DrawString((i + 1).ToString() + [Ô] de [Ô] + QtdParcelas.ToString(), myFont, Brushes.Black, 170, PosY + 35);
e.Graphics.DrawString((i + 1).ToString() + [Ô] de [Ô] + QtdParcelas.ToString(), myFont, Brushes.Black, 545, PosY + 35);
e.Graphics.DrawString([Ô]Número Parcela:[Ô], myFont, Brushes.Black, 150, PosY + 10);
e.Graphics.DrawString([Ô]Número Parcela:[Ô], myFont, Brushes.Black, 525, PosY + 10);
Datetime DataVcto = myLista.Rows[i][[Ô]DataVcto[Ô]].ToString().ToDateTime();
e.Graphics.DrawString(DataVcto.ToString([Ô]dd/MM/yyyy[Ô]), myFont, Brushes.Black, 280, PosY + 35);
e.Graphics.DrawString(DataVcto.ToString([Ô]dd/MM/yyyy[Ô]), myFont, Brushes.Black, 655, PosY + 35);
e.Graphics.DrawString([Ô]Vencimento[Ô], myFont, Brushes.Black, 280, PosY + 10);
e.Graphics.DrawString([Ô]Vencimento[Ô], myFont, Brushes.Black, 655, PosY + 10); PosY += 55;
e.Graphics.DrawLine(new Pen(Brushes.Black, 2), 50, PosY + 10, 400, PosY + 10);
e.Graphics.DrawLine(new Pen(Brushes.Black, 2), 425, PosY + 10, 775, PosY + 10);
//******************************************************************************************************************
decimal valorParcela = myLista.Rows[i][[Ô]ValorParc[Ô]].ToDecimal();
e.Graphics.DrawString(Math.Round(valorParcela, 2).ToString([Ô]#,##0.00[Ô]), new Font([Ô]Gautami[Ô], 14), Brushes.Black, 230, PosY + 12);
e.Graphics.DrawString(Math.Round(valorParcela, 2).ToString([Ô]#,##0.00[Ô]), new Font([Ô]Gautami[Ô], 14), Brushes.Black, 605, PosY + 12);
e.Graphics.DrawString([Ô]Valor da Parcela R$[Ô], new Font([Ô]Gautami[Ô], 14, FontStyle.Bold), Brushes.Black, 50, PosY + 12);
e.Graphics.DrawString([Ô]Valor da Parcela R$[Ô], new Font([Ô]Gautami[Ô], 14, FontStyle.Bold), Brushes.Black, 425, PosY + 12); PosY += 40;
e.Graphics.DrawLine(new Pen(Brushes.Black, 2), 50, PosY + 5, 400, PosY + 5);
e.Graphics.DrawLine(new Pen(Brushes.Black, 2), 425, PosY + 5, 775, PosY + 5);
e.Graphics.DrawString([Ô]Assinatura do caixa[Ô], myFont, Brushes.Black, 50, PosY + 7);
e.Graphics.DrawString([Ô]Assinatura do caixa[Ô], myFont, Brushes.Black, 425, PosY + 7); PosY += 110;
RegistroAtual++;
QtdporPagina++;
if (QtdporPagina == 4)
{
e.HasMorePages = true;
QtdporPagina = 0;
PaginaAtual++;
break;
}
if (i + 1 == QtdParcelas)
{
e.HasMorePages = false;
}
}
}
CLEVERTON: esse código é para VB 6 ?
kkkkk vige, foi mal, não percebi esse detalhe. vou excluir
te dizer algo assim do zero amigo é bastante dificil pois cada usuario aqui iria ter uma lógica diferente...
eu recomendo que vc cria a sua logica e va escrevendo o código e à medida que for tendo dificuldades agente vai te ajudando...
eu faria assim, criaria um formulário com algumas opções tipo:
Imprime trimestre
Imprime Semestre
Imprime Ano
E à partir daà iria criando as rotinas para cada opção, assim as ideias vão fluindo e o código crescendo...
abraço...
eu recomendo que vc cria a sua logica e va escrevendo o código e à medida que for tendo dificuldades agente vai te ajudando...
eu faria assim, criaria um formulário com algumas opções tipo:
Imprime trimestre
Imprime Semestre
Imprime Ano
E à partir daà iria criando as rotinas para cada opção, assim as ideias vão fluindo e o código crescendo...
abraço...
Tópico encerrado , respostas não são mais permitidas