Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Codigo de Factura (https://www.clubdelphi.com/foros/showthread.php?t=84384)

camiz 12-10-2013 18:30:08

Codigo de Factura
 
Hola amigos nuevamente aca en el foro buscando ayuda.

tengo un problemita quiero generar un codigo de 6 dijitos que sea autoincremental de esta manera.

000001
000002
000003
000004
000005
000006
000007
000008
000009
000010
asi sucecivamente

Quiero que compruebe con el numero que esta guardado en la base de datos y cree uno nuevo sin repetirse.
tengo este codigo pero me muestra solo un digito y quiero que sea de 6

Código Delphi [-]
begin
with frmConeccion.MostrarNumFactura do
begin
Active := True;
CodFactura := FloatToStr(FieldByName('CODFACTURA').AsInteger +1);
Active := False;
end;

FGarcia 12-10-2013 19:01:26

Hola!

Para empezar te diré que el numero de factura es un integer (entero) en el sistema de numeración los 0's a la izquierda no tienen validez por eso los ignora.

Una solucion seria que convirtieras de integer a string, verificaras la longitud que tiene la string y después le añadieras los 0's a la izquierda hasta que tu longitud sea de 6 caracteres


Saludos!

camiz 12-10-2013 19:28:51

Resuelto
 
para alguno que lo necesite lo resovi
de esta manera y funciona muy bien.


Código Delphi [-]
var  CodFactura :string;
begin
  with frmConeccion.MostrarNumFactura do
  begin
  Active := True;
  CodFactura := FloatToStr(FieldByName('CODFACTURA').AsInteger +1);
  Active := False;
  begin
    txtnumeroFactura.Text := FormatFloat('000000', StrToInt(CodFactura));
  end;
end;

Luis M. 12-10-2013 19:59:16

Hola.
Más o menos podría ser así:

Código Delphi [-]
procedure XX.Facturas(DataSet: TDataSet);
var
  cText: string;
begin
//--- Obtenemos última factura de la tabla facturas ---
factura.close;
facturas.sql.text := 'Select max(numero) as cUltimo from facturas';
facturas.open;

cText := IntToStr(facturas.FieldByName(cUltimo).AsInteger + 1);
CodFactura := Copy('000000', 1, 6 - Length(cText)) + cText;
facturas.close;

end;

José Luis Garcí 13-10-2013 10:48:04

Hola Camiz, el tema de los códigos ya lo trate en el Tutorial http://www.clubdelphi.com/foros/show...=83457&page=13, aquí encontraras tanto el seguimiento y registro de nº de factura como su serie, puedes ver que el numerador lo registro aparte en configuración, ya que se te puede dar el caso de borrar una factura emitida y tener duplicado un nº de factura con lo que tendrías grabes problemas con hacienda, si te puedo ayudar en algo más, ya sabes.

camiz 14-10-2013 17:21:42

Cita:

Empezado por José Luis Garcí (Mensaje 468247)
Hola Camiz, el tema de los códigos ya lo trate en el Tutorial http://www.clubdelphi.com/foros/show...=83457&page=13, aquí encontraras tanto el seguimiento y registro de nº de factura como su serie, puedes ver que el numerador lo registro aparte en configuración, ya que se te puede dar el caso de borrar una factura emitida y tener duplicado un nº de factura con lo que tendrías grabes problemas con hacienda, si te puedo ayudar en algo más, ya sabes.


gracias lo boy ha hechar un vistaso.

oscarac 15-10-2013 21:55:37

yo uso algo parecido a esto
Código Delphi [-]
procedure TfrmValesdeConsumo.VerificarNumero;
Var _OK :Boolean;
begin
  _ok := True;
  while _ok Do
  Begin
    qryVerNumero.Close;
    qryVerNumero.Parameters.ParamByName('TDC').Value := frmMain._Origen;
    qryVerNumero.Parameters.ParamByName('DOC').Value := _DOC;
    qryVerNumero.Open;
    qryVerNumero.First;
    if qryVerNumeroDOC.AsString <> '' Then // o tambien podria contar cuantos registros hay
    begin
      _Numero := _Numero + 1;
      _DOC := Llenar(frmMain._Serie,3) + '-' + Llenar(FloatToStr(_Numero),7);
    end
    Else
    _ok := False;
  end;
end;



qryvernumero
Cita:

Select TDC,DOC
from tblConsumoc
Where
TDC = :Tdc and
DOC = :DOC

camiz 21-10-2013 23:35:30

oscarac
Excelente aporte, boy a ver como funciona a ver si lo uso en mi proyecto, gracias.^\||/


La franja horaria es GMT +2. Ahora son las 03:27:40.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi