AJUDA COM IMPRESSÃO DE CARNE

KNILSSON 18/04/2016 15:05:41
#461087
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á!
DAMASCENO.CESAR 18/04/2016 15:34:09
#461089
google
KNILSSON 18/04/2016 15:42:27
#461091
Citação:

:
google


Eu procurei, mas não achei nada que posso utilizar!
CLEVERTON 18/04/2016 18:12:55
#461100
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.

        
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;
}
}

}


KNILSSON 19/04/2016 14:21:21
#461131
CLEVERTON: esse código é para VB 6 ?
CLEVERTON 19/04/2016 20:01:11
#461143
kkkkk vige, foi mal, não percebi esse detalhe. vou excluir
FABAO 19/04/2016 23:09:47
#461148
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...
Tópico encerrado , respostas não são mais permitidas