Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-12-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
ayuda con mantenimiento de sistema

bueno como comente hace unos dias estoy en actualizacion de un pequeño punto de venta y quiero actualizar el form de facturacion, para ello utilizo un TStringGrid como detalle de factura pero la verdad es engorroso mostrar informacion en el ya lo he hecho de hecho funciona, pero he oido que todo este codigo se podria evitar si pudiera crear una tabla temporal con el componente JVMemorydataset de l aJEDi, ya logre crear la tabla y agregar elementos, pero no se como interactuar con ellos y como afectaria a mi base de produstos.

ongo el codigo que utilizo para llegar en Tsgrind Grid espero algun consejo pero de antamno muchas gracias
Código Delphi [-]
procedure TFfactura.txtcodigoExit(Sender: TObject);
var
 wprecio_total:Double;
 i:Integer;
 {variables para modificaciones}
 wcodigomodificar,wdescripcionmodificar:string;
 wventa_totalmodificada:Double;
 wdescuentomodificar,wpreciomodificar:Double;
 wtotalmodificar:Double;
 wOK:Boolean;
 begin
 wcodigobarras:=Trim(Ffactura.txtcodigo.Text);
  if wcodigobarras<>'' then
   begin
    For i:=1 to Ffactura.SGFact.RowCount-1 do
     if Ffactura.SGFact.Cells[0,i] = Trim(wcodigobarras) then
      begin
       wOK:=True;
       {codigo para cuando el registro ya existe en el detalle de la factura}
       if wOK=True then
        begin
         {tomo los registros que existen en el flexgrid de acuerdo al registro que voy agregar}
         wcantidadmodificar:=StrToFloat(SGFact.Cells[2,i]);//tomo el valor de la cantidad que tengo en el flexgrid
         wpreciomodificar:=StrToFloat(Ffactura.SGFact.Cells[3,i]);//paso el valor del precio a la variablde de precio
         wcodigomodificar:=Ffactura.SGFact.Cells[0,i]; //tomo el codigo de barras
         wdescripcionmodificar:=Ffactura.SGFact.Cells[1,i]; //tomo la descripcion

         if (wcantidadmodificar<=0) and (wdescuento_considerar=0) then
          begin
           Ffactura.SGFact.Cells[0,cuenta] := wcodigobarras;//agrego codigo de wcodigobarras
           Ffactura.SGFact.Cells[1,Cuenta]:=wdescripcionmodificar;
           Ffactura.wprecio_venta:=wprecio_venta;//StrToFloat(FieldByname('precioventa').AsVariant);//pongo el precio de venta en la variable de precio
           Ffactura.SGFact.Cells[2,Cuenta]:=FloatToStr(wcantidad_venta+1);
           Ffactura.SGFact.Cells[3,Cuenta]:=FloatToStr(Ffactura.wprecio_venta);//pongo el precio del articulo con formato de miles
           //Ffactura.SGFact.Cells[3,Cuenta]:=FormatFloat('###,###,###,##0.00', StrToFloat(Ffactura.SGFact.Cells[3,Cuenta]));
           Ffactura.SGFact.Cells[4,Cuenta]:='0.00';//pongo descuento igual a cero
           //pongo las variables de cantidad y descuento en numero para poder realizar operaciones
           wcantidad_venta:=1;
           wdescuento_considerar:=0;
           wimporte_del_descuento:=((wprecio_venta*wdescuento_considerar)/100);
           wprecio_con_descuento:=(wprecio_venta-wimporte_del_descuento);
           wventa_total_importe:=(wcantidad_venta * wprecio_con_descuento);
           SGFact.Cells[5,Cuenta]:=FloatToStr(wventa_total_importe);
           //Ffactura.SGFact.Cells[5,Cuenta]:=FormatFloat('###,###,###,##0.00', StrToFloat(Ffactura.SGFact.Cells[5,Cuenta]));
           //calculo totales
           calcula_totales;
           wcantidad_venta:=0;
           wdescuento_considerar:=0;
           Ffactura.txtcodigo.Text:='';
           ffactura.txtcodigo.SetFocus;
           Cuenta:=Cuenta+1;
           exit;
          end;
          if (wcantidad_venta>=1) and (wdescuento_considerar=0) then
           begin
            Ffactura.SGFact.Cells[0,cuenta] := wcodigobarras;//agrego codigo de wcodigobarras
            Ffactura.SGFact.Cells[1,Cuenta]:=wdescripcionmodificar;//(FieldByname('nombre').AsString);//agrego nombre del producto
            Ffactura.wprecio_venta:=wprecio_venta;//StrToFloat(FieldByname('precioventa').AsVariant);//pongo el precio de venta en la variable de precio
            Ffactura.SGFact.Cells[2,Cuenta]:=FloatToStr(wcantidad_venta+1);
            Ffactura.SGFact.Cells[3,Cuenta]:=FloatToStr(Ffactura.wprecio_venta);//pongo el precio del articulo con formato de miles
            //Ffactura.SGFact.Cells[3,Cuenta]:=FormatFloat('###,###,###,##0.00', StrToFloat(Ffactura.SGFact.Cells[3,Cuenta]));
            Ffactura.SGFact.Cells[4,Cuenta]:='0.00';//pongo descuento igual a cero
            //pongo las variables de cantidad y descuento en numero para poder realizar operaciones
            //wcantidad_venta:=1;
            wdescuento_considerar:=0;
            wimporte_del_descuento:=((wprecio_venta*wdescuento_considerar)/100);
            wprecio_con_descuento:=(wprecio_venta-wimporte_del_descuento);
            wventa_total_importe:=(wcantidad_venta * wprecio_con_descuento);
            SGFact.Cells[5,Cuenta]:=FloatToStr(wventa_total_importe);
            //Ffactura.SGFact.Cells[5,Cuenta]:=FormatFloat('###,###,###,##0.00', StrToFloat(Ffactura.SGFact.Cells[5,Cuenta]));
            //calculo totales
            calcula_totales;
            wcantidad_venta:=0;
            wdescuento_considerar:=0;
            Ffactura.txtcodigo.Text:='';
            ffactura.txtcodigo.SetFocus;
            Cuenta:=Cuenta+1;
            exit;
           end;
           if (wcantidad_venta>=1) and (wdescuento_considerar>0) then
            begin
             Ffactura.SGFact.Cells[0,cuenta] := wcodigobarras;//agrego codigo de wcodigobarras
             Ffactura.SGFact.Cells[1,Cuenta]:=wdescripcionmodificar;//(FieldByname('nombre').AsString);//agrego nombre del producto
             Ffactura.wprecio_venta:=wprecio_venta;//StrToFloat(FieldByname('precioventa').AsVariant);//pongo el precio de venta en la variable de precio
             Ffactura.SGFact.Cells[2,Cuenta]:=FloatToStr(wcantidad_venta);
             Ffactura.SGFact.Cells[3,Cuenta]:=FloatToStr(Ffactura.wprecio_venta);//pongo el precio del articulo con formato de miles
             //Ffactura.SGFact.Cells[3,Cuenta]:=FormatFloat('###,###,###,##0.00', StrToFloat(Ffactura.SGFact.Cells[3,Cuenta]));
             Ffactura.SGFact.Cells[4,Cuenta]:=FloatToStr(wdescuento_considerar);
             //pongo las variables de cantidad y descuento en numero para poder realizar operaciones
             //wcantidad_venta:=1;
             wimporte_del_descuento:=((wprecio_venta*wdescuento_considerar)/100);
             wprecio_con_descuento:=(wprecio_venta-wimporte_del_descuento);
             wventa_total_importe:=(wcantidad_venta * wprecio_con_descuento);
             SGFact.Cells[5,Cuenta]:=FloatToStr(wventa_total_importe);
             //Ffactura.SGFact.Cells[5,Cuenta]:=FormatFloat('###,###,###,##0.00', StrToFloat(Ffactura.SGFact.Cells[5,Cuenta]));
             //calculo totales
             calcula_totales;
             wcantidad_venta:=0;
             wdescuento_considerar:=0;
             Ffactura.txtcodigo.Text:='';
             ffactura.txtcodigo.SetFocus;
             Cuenta:=Cuenta+1;
             exit;
            end;
         Exit;
        end;
      end;
    {verifico la informacion del resultado para ver si agrego por primera vez el producto}
   if wOK=False then
    begin
     if wcodigobarras<>'' then
        begin
         with Fmodulo.Qry_Temp do
          begin
           Close;
           sql.clear;
           SQL.Add('select * from articulo');
           SQL.Add('where codigobarras=:Pcodigobarras');
           Parameters.ParamByName('pcodigobarras').Value:=Trim(wcodigobarras);
           try
            open;
             if not Fmodulo.Qry_Temp.IsEmpty then
              begin
               while not Fmodulo.Qry_Temp.Eof do
                begin
                 If Cuenta > 1 then SGFact.RowCount := SGFact.RowCount + 1;
                 if (wcantidad_venta<=0) and (wdescuento_considerar=0) then
                  begin
                   Ffactura.SGFact.Cells[0,cuenta] := wcodigobarras;//agrego codigo de wcodigobarras
                   Ffactura.SGFact.Cells[1,Cuenta]:=(FieldByname('nombre').AsString);//agrego nombre del producto
                   Ffactura.wprecio_venta:=StrToFloat(FieldByname('precioventa').AsVariant);//pongo el precio de venta en la variable de precio
                   Ffactura.SGFact.Cells[2,Cuenta]:='1';
                   Ffactura.SGFact.Cells[3,Cuenta]:=FloatToStr(Ffactura.wprecio_venta);//pongo el precio del articulo con formato de miles
                   //Ffactura.SGFact.Cells[3,Cuenta]:=FormatFloat('###,###,###,##0.00', StrToFloat(Ffactura.SGFact.Cells[3,Cuenta]));
                   Ffactura.SGFact.Cells[4,Cuenta]:='0.00';//pongo descuento igual a cero
                   //pongo las variables de cantidad y descuento en numero para poder realizar operaciones
                   wcantidad_venta:=1;
                   wdescuento_considerar:=0;
                   wimporte_del_descuento:=((wprecio_venta*wdescuento_considerar)/100);
                   wprecio_con_descuento:=(wprecio_venta-wimporte_del_descuento);
                   wventa_total_importe:=(wcantidad_venta * wprecio_con_descuento);
                   SGFact.Cells[5,Cuenta]:=FloatToStr(wventa_total_importe);
                   //Ffactura.SGFact.Cells[5,Cuenta]:=FormatFloat('###,###,###,##0.00', StrToFloat(Ffactura.SGFact.Cells[5,Cuenta]));
                   //calculo totales
                   calcula_totales;
                   wcantidad_venta:=0;
                   wdescuento_considerar:=0;
                   Ffactura.txtcodigo.Text:='';
                   ffactura.txtcodigo.SetFocus;
                   Cuenta:=Cuenta+1;
                   exit;
                  end;
                  if (wcantidad_venta>=1) and (wdescuento_considerar=0) then
                   begin
                    Ffactura.SGFact.Cells[0,cuenta] := wcodigobarras;//agrego codigo de wcodigobarras
                     Ffactura.SGFact.Cells[1,Cuenta]:=(FieldByname('nombre').AsString);//agrego nombre del producto
                     Ffactura.wprecio_venta:=StrToFloat(FieldByname('precioventa').AsVariant);//pongo el precio de venta en la variable de precio
                     Ffactura.SGFact.Cells[2,Cuenta]:=FloatToStr(wcantidad_venta);
                     Ffactura.SGFact.Cells[3,Cuenta]:=FloatToStr(Ffactura.wprecio_venta);//pongo el precio del articulo con formato de miles
                     //Ffactura.SGFact.Cells[3,Cuenta]:=FormatFloat('###,###,###,##0.00', StrToFloat(Ffactura.SGFact.Cells[3,Cuenta]));
                     Ffactura.SGFact.Cells[4,Cuenta]:='0.00';//pongo descuento igual a cero
                     //pongo las variables de cantidad y descuento en numero para poder realizar operaciones
                     //wcantidad_venta:=1;
                     wdescuento_considerar:=0;
                     wimporte_del_descuento:=((wprecio_venta*wdescuento_considerar)/100);
                     wprecio_con_descuento:=(wprecio_venta-wimporte_del_descuento);
                     wventa_total_importe:=(wcantidad_venta * wprecio_con_descuento);
                     SGFact.Cells[5,Cuenta]:=FloatToStr(wventa_total_importe);
                     //Ffactura.SGFact.Cells[5,Cuenta]:=FormatFloat('###,###,###,##0.00', StrToFloat(Ffactura.SGFact.Cells[5,Cuenta]));
                     //calculo totales
                     calcula_totales;
                     wcantidad_venta:=0;
                     wdescuento_considerar:=0;
                     Ffactura.txtcodigo.Text:='';
                     ffactura.txtcodigo.SetFocus;
                     Cuenta:=Cuenta+1;
                     exit;
                   end;
                   if (wcantidad_venta>=1) and (wdescuento_considerar>0) then
                    begin
                     Ffactura.SGFact.Cells[0,cuenta] := wcodigobarras;//agrego codigo de wcodigobarras
                     Ffactura.SGFact.Cells[1,Cuenta]:=(FieldByname('nombre').AsString);//agrego nombre del producto
                     Ffactura.wprecio_venta:=StrToFloat(FieldByname('precioventa').AsVariant);//pongo el precio de venta en la variable de precio
                     Ffactura.SGFact.Cells[2,Cuenta]:=FloatToStr(wcantidad_venta);
                     Ffactura.SGFact.Cells[3,Cuenta]:=FloatToStr(Ffactura.wprecio_venta);//pongo el precio del articulo con formato de miles
                     //Ffactura.SGFact.Cells[3,Cuenta]:=FormatFloat('###,###,###,##0.00', StrToFloat(Ffactura.SGFact.Cells[3,Cuenta]));
                     Ffactura.SGFact.Cells[4,Cuenta]:=FloatToStr(wdescuento_considerar);
                     //pongo las variables de cantidad y descuento en numero para poder realizar operaciones
                     //wcantidad_venta:=1;
                     wimporte_del_descuento:=((wprecio_venta*wdescuento_considerar)/100);
                     wprecio_con_descuento:=(wprecio_venta-wimporte_del_descuento);
                     wventa_total_importe:=(wcantidad_venta * wprecio_con_descuento);
                     SGFact.Cells[5,Cuenta]:=FloatToStr(wventa_total_importe);
                     //Ffactura.SGFact.Cells[5,Cuenta]:=FormatFloat('###,###,###,##0.00', StrToFloat(Ffactura.SGFact.Cells[5,Cuenta]));
                     //calculo totales
                     calcula_totales;
                     wcantidad_venta:=0;
                     wdescuento_considerar:=0;
                     Ffactura.txtcodigo.Text:='';
                     ffactura.txtcodigo.SetFocus;
                     Cuenta:=Cuenta+1;
                     exit;
                    end;
                  Next;
                end;
              end
              else
              begin
               Application.MessageBox('No existe Producto en almacén'+CHR(13)+'con el Código de Barras proporcionado.','Error de Búsqueda',MB_TASKMODAL+ MB_ICONERROR);
               Ffactura.txtcodigo.Text:='';
               Ffactura.txtcodigo.SetFocus;
               Exit;
              end;
           except
            on E:EOleException do
             begin
              MessageDlg(Format('Error: %s    Codigo: %d', [E.Message, E.ErrorCode]), mtError, [mbOK], 0);
             end;
           end;
          end;
        end;
     Exit;
    end;

   end;
 end;
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Mantenimiento a Access Jucho69 Conexión con bases de datos 17 22-05-2010 11:43:38
Cuanto cobrar por mantenimiento del sistema? nfrfabian Varios 4 10-11-2007 00:12:15
Mantenimiento De Registro RDELROSARIOM Conexión con bases de datos 1 22-04-2005 23:15:34
Curso de mantenimiento del sistema para principiantes. marcoszorrilla Humor 0 16-11-2003 09:41:10


La franja horaria es GMT +2. Ahora son las 12:39:19.


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
Copyright 1996-2007 Club Delphi