Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-10-2006
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 27
Caral Va por buen camino
Hola
La verdad sigo sin entender.
La nomina quincenal se paga solo las quincenas
La nomina Semanal se paga solo las semanas
Entonces donde esta el problema, si le indico a mi programa que me de las nominas me las dara en su fecha exacta.
Ahora si quieres que el programa defina que ha sido pagado por semana o por quincena o por mes, es tan facil como poner un campo en la tabla que lo defina, S, Q, M.
En la consulta pones un edit en el que se verifica que cumpla la condicion osea que el campo FechaDePago que as de incluir en la tabla, sea S, o Q, o M.
La verdad siempre con el mismo sistema que te indique, lo veo realmente simple, creo que buscar las nominas exactas como las planteas te va a dar problemas ya que en algunas ocasiones la fecha de pago se puede variar si hay dias feriados u otros, esto es normal en las empresas, para mi te estas complicado la vida, sinceramente el codigo que necesitas es simple.
Saludos
Responder Con Cita
  #2  
Antiguo 31-10-2006
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 26
vtdeleon Va por buen camino
Saludos

No he leido todo el hilo, pero creo que el incoveniente es por las quicenas.

Los meses son irregulares, es decir, terminan tanto en dias 30 como en 31, hasta en 28 y 29 en el caso de febrero.

Conseguir la primera quicena es facil pues todo mes tiene dia 15's, pero ¿como conseguimos el ultimo dia de cada mes?, Hmm facil, yendonos al dia 1 de cada mes y restarle un dia. Voila (Se escribira asi? )

Creo que desarrollar un procedimiento o funcion no se te seria dificil, verdad?, sino aqui estamos.

Suerte.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #3  
Antiguo 31-10-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
He hecho esto, aunque no lo he probado, estoy seguro que te ayudará.

Con respecto de las semanas, hará falta saber cómo se delimitan las semanas para hacer algo que te sirva, pero con lo que te he dado, seguro lo sacas en un abrir y cerrar de ojos.

Código Delphi [-]
procedure TForm1.QuincenasDelAnio(Anio: integer);
var
  FechaIni, FechaFin: TDateTime;
begin
  FechaIni := EncodeDate(Anio, 1, 1);
  FechaFin := EncodeDate(Anio, 1, 15);
  while YearOf(FechaIni) = Anio do
  begin
    Memo1.Lines.Add(DateToStr(FechaIni) + ' - ' + DateToStr(FechaFin));
    FechaIni := FechaFin + 1;
    if DayOf(FechaIni) = 1 then
      FechaFin := FechaIni + 14
    else
      FechaFin := EncodeDate(YearOf(FechaIni), MonthOf(FechaFin), DaysInAMonth(YearOf(FechaIni), MonthOf(FechaIni)));
  end;
end;

procedure TForm1.MesesDelAnio(Anio: Integer);
var
  FechaIni, FechaFin: TDateTime;
begin
  FechaIni := EncodeDate(Anio, 1, 1);
  FechaFin := IncMonth(FechaIni, 1) - 1;
  while YearOf(FechaIni) = Anio do
  begin
    Memo1.Lines.Add(DateToStr(FechaIni) + ' - ' + DateToStr(FechaFin));
    FechaIni := FechaFin + 1;
    FechaFin := IncMonth(FechaIni, 1) - 1;
  end;
end;

Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate

Última edición por jachguate fecha: 31-10-2006 a las 03:34:32.
Responder Con Cita
  #4  
Antiguo 31-10-2006
OscarRd OscarRd is offline
Miembro
 
Registrado: sep 2006
Posts: 14
Poder: 0
OscarRd Va por buen camino
Gracias, pero te recuerdo que uso Delphi 5
hay funciones dentro de tu codigo que no estan en esta version.
Responder Con Cita
  #5  
Antiguo 31-10-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Olvidé mencionar que debes incluir la función DateUtils en la clausula Uses de tu unidad. Francamente desconozco si dicha unidad está disponible en delphi 5.

Saludos.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 01-11-2006
reina reina is offline
Miembro
 
Registrado: ago 2005
Ubicación: Capital Federal-La Plata (Bs As)
Posts: 147
Poder: 21
reina Va por buen camino
Hola! tarde..recien copie el codigo del compañero..y le reforme unas cosas por sino tenes esas funciones en delphi5..en mi triste delphi 4 no estan .

Código Delphi [-]
procedure TForm1.QuincenasDelAnio(Anio: integer);
var
  FechaIni, FechaFin: TDate;  aux, i:integer;
begin
  for i:= 1 to 12 do
  begin
       FechaIni := EncodeDate(Anio, i, 1);
       FechaFin := EncodeDate(Anio, i, 15);
       Memo1.Lines.add(Datetostr(FechaIni) + '-' + DateToStr(FechaFin));
       FechaIni:= EncodeDate(Anio, i, 16);
       if i = 12 then
           aux:=Round(EncodeDate((Anio + 1), 1, 1) - EncodeDate(Anio, i, 1))
       else
           aux:=Round(EncodeDate(Anio, i + 1, 1) - EncodeDate(Anio, i, 1));
       FechaFin :=EncodeDate(Anio,i, aux);
       Memo1.Lines.add(Datetostr(FechaIni) + '-' + DateToStr(FechaFin));
  end;
end;
procedure TForm1.MesesDelAnio(Anio: Integer);
var
  FechaIni, FechaFin: TDate;  aux, i:integer;
begin
  for i:= 1 to 12 do
  begin
       FechaIni := EncodeDate(Anio, i, 1);
       if i = 12 then
           aux:=Round(EncodeDate((Anio + 1), 1, 1) - EncodeDate(Anio, i, 1))
       else
           aux:=Round(EncodeDate(Anio, i + 1, 1) - EncodeDate(Anio, i, 1));
       FechaFin :=EncodeDate(Anio,i, aux);
       Memo1.Lines.add(Datetostr(FechaIni) + '-' + DateToStr(FechaFin));
  end;
end;

Bueno fijate si te sirve...esta hecho medio asi nomas, de todas formas me parece que si sos nuevo en delphi deberias usar el help..la ayuda no muerde y esta para ayudar! la palabra misma lo dice. Si pones date..datetime o algo relacionado con lo que queres buscar te sale lo que buscas.
Tambien podrias mirar el libro La Cara Oculta de Delphi 4, es el mejor para mi gusto para aprender delphi.
salu22 y exitos
Responder Con Cita
  #7  
Antiguo 01-11-2006
OscarRd OscarRd is offline
Miembro
 
Registrado: sep 2006
Posts: 14
Poder: 0
OscarRd Va por buen camino
Gracias a todos, por su valiosa colaboracion
con sus consejos y recomendaciones pude lograr mi objetivo.

A continuacion esta el codigo:
Una ves mas Gracias a todos....
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
var
  Present,PrimerDia,primerDiaMesSig,
   m,ndia,dFecha,dFecha2,dFecha3,dFecha4: TDateTime;
   cantDiaMes,re: word;
   Year, Month, Day, Hour, Min, Sec, MSec, Tf : Word;
    n :integer;
    date, Date2, date3, Date4,
   sYear,sDia,cFecha,cFecha2,cFecha3,cFecha4 : string;
    I,iCount, DiaTopeMes, inDias :Integer;
   quinc1, quinc2:Real;
begin
  case  rgpPeriodos.ItemIndex of
   0:begin {Semanal}
      DiaTopeMes := 30;
     quinc1:= DiaTopeMes/2;
    quinc2:= quinc1 + 1;
    with Query1 do
     begin
        Sql.Clear;
        close;
        try
         sql.add('create table #TempPeri(fecha_1 char(20),fecha_2 char(20))');
          ExecSQL;
        except

        end;
         sYear :=copy(DateEdit971.text,7,10); //Año
          sDia :=copy(DateEdit971.text,1,2); //Dia
       For i:= 1 to 12 Do
       Begin
         Month:= Month + 1;
           if Length(IntToStr(Month)) <> 2 then
           begin
             Date := sDia+'/'+'0'+IntToStr(Month)+'/'+sYear;
           end
           else
           begin
               Date := sDia+'/'+IntToStr(Month)+'/'+sYear;
           end;

            dFecha :=strTodate(Date);

          //----------------------------------------------------------
           {Obtiene el Total de dias del mes}
           PrimerDia := StrToDate(Date);
         PrimerDiaMesSig := incMonth(PrimerDia,1);
         cantDiaMes := round(PrimerDiaMesSig - PrimerDia);

            for iCount := 1 to 4 do
            Begin
             inDias := 7;
              if iCount = 1 then
              begin
                dFecha4 :=  dFecha;
              dFecha  :=  dFecha+7;
              Dfecha  :=  dFecha -1;
              end
              else
              begin
                dFecha4 := dFecha;
              dFecha  := dFecha+7;
              end;

              cfecha  := DateTostr(dFecha);
              cFecha4 := DateTostr(dFecha4);

              if iCount = 1 then
              begin
               Close;
              sql.Clear ;
                Sql.Add('insert into #TempPeri');
                sql.add('Values('+QuotedStr(cFecha4)+','+QuotedStr(cFecha)+')');
                ExecSQL;
              end;

              dFecha2 := dFecha+1;
              cFecha2 := DateTostr(dFecha2);

              dFecha3 := dFecha+7;
              cFecha3 := DateTostr(dFecha3);

             sql.Clear ;
               Sql.Add('insert into #TempPeri');
             sql.add('Values('+QuotedStr(cFecha2)+','+QuotedStr(cFecha3)+')');
             ExecSQL;
            end;
       end;
     end;
     With query2 do
     begin
        sql.clear;
        close;
        sql.add('select * from #TempPeri');
        open;
     end;{=======FIN SEMANAL=======}
   end;

   1:begin {Quincenal}
      DiaTopeMes := 30;
     quinc1:= DiaTopeMes/2;
    quinc2:= quinc1 + 1;
    with Query1 do
     begin
        Sql.Clear;
        close;
        try
         sql.add('create table #TempPeri(fecha_1 char(20),fecha_2 char(20))');
          ExecSQL;
        except

        end;
         sYear :=copy(DateEdit971.text,7,10); //Año
          sDia :=copy(DateEdit971.text,1,2); //Dia
       For i:= 1 to 12 Do
       Begin
         Month:= Month + 1;
           if Length(IntToStr(Month)) <> 2 then
           begin
             Date := sDia+'/'+'0'+IntToStr(Month)+'/'+sYear;
              Date2 := FloatToStr(quinc1) +'/'+'0'+IntToStr(Month)+'/'+sYear;
           end
           else
           begin
               Date := sDia+'/'+IntToStr(Month)+'/'+sYear;
              Date2 := FloatToStr(quinc1) +'/'+IntToStr(Month)+'/'+sYear;
           end;

           //----------------------------------------------------------
           {Obtiene el Total de dias del mes}
           PrimerDia :=StrToDate(Date);
         PrimerDiaMesSig := incMonth(PrimerDia,1);
         cantDiaMes := round(PrimerDiaMesSig - PrimerDia);
           //-----------------------------------------------------------
           if Length(IntToStr(Month)) <> 2 then
           begin
          Date3 := FloatToStr(quinc2) +'/'+'0'+IntToStr(Month)+'/'+sYear;
             Date4 := IntToStr(cantDiaMes ) +'/'+'0'+IntToStr(Month)+'/'+sYear;
           end
           else
           begin
           Date3 := FloatToStr(quinc2) +'/'+IntToStr(Month)+'/'+sYear;
            Date4 := IntToStr(cantDiaMes ) +'/'+IntToStr(Month)+'/'+sYear;
           end;


           Close;
           sql.Clear ;
           Sql.Add('insert into #TempPeri');
           sql.add('Values('+QuotedStr(Date)+','+QuotedStr(Date2)+')');
           ExecSQL;

           sql.Clear ;
             Sql.Add('insert into #TempPeri');
           sql.add('Values('+QuotedStr(Date3)+','+QuotedStr(Date4)+')');
           ExecSQL;
       end;
     end;
     With query2 do
     begin
        sql.clear;
        close;
        sql.add('select * from #TempPeri');
        open;
     end;
   end; {===============Fin Quincenal===============}

   2:begin {Mensual}
      DiaTopeMes := 30;
     quinc1:= DiaTopeMes/2;
    quinc2:= quinc1 + 1;
    with Query1 do
     begin
        Sql.Clear;
        close;
        try
            Sql.add('drop table #TempPeri');
            Sql.Clear;
            close;
        sql.add('create table #TempPeri(fecha_1 char(20),fecha_2 char(20))');
          ExecSQL;
        except
        end;
         sYear :=copy(DateEdit971.text,7,10); //Año
          sDia :=copy(DateEdit971.text,1,2); //Dia
       For i:= 1 to 12 Do
       Begin
         Month:= Month + 1;
           if Length(IntToStr(Month)) <> 2 then
           begin
             Date := sDia+'/'+'0'+IntToStr(Month)+'/'+sYear;
           end
           else
           begin
               Date := sDia+'/'+IntToStr(Month)+'/'+sYear;
           end;

           //----------------------------------------------------------
           {Obtiene el Total de dias del mes}
           PrimerDia :=StrToDate(Date);
         PrimerDiaMesSig := incMonth(PrimerDia,1);
         cantDiaMes := round(PrimerDiaMesSig - PrimerDia);
           //-----------------------------------------------------------
           if Length(IntToStr(Month)) <> 2 then
           begin
             Date4 := IntToStr(cantDiaMes ) +'/'+'0'+IntToStr(Month)+'/'+sYear;
           end
           else
           begin
             Date4 := IntToStr(cantDiaMes ) +'/'+IntToStr(Month)+'/'+sYear;
           end;

           Close;
           sql.Clear ;
           Sql.Add('insert into #TempPeri');
           sql.add('Values('+QuotedStr(Date)+','+QuotedStr(Date4)+')');
           ExecSQL;
       end;
     end;
     With query2 do
     begin
        sql.clear;
        close;
        sql.add('select * from #TempPeri');
        open;
     end; {===============Fin Mensual====================}
     end;
     3:begin {Anual}
       with Query1 do
      begin
        Sql.Clear;
       close;
       try
          Sql.add('drop table #TempPeri');
           Sql.Clear;
            close;
        sql.add('create table #TempPeri(fecha_1 char(20),fecha_2 char(20))');
          ExecSQL;
         except
         end;

         sYear := copy(DateEdit971.text,7,10); //Año
          sDia  := copy(DateEdit971.text,1,2); //Dia

         if Length(IntToStr(Month)) <> 2 then
         begin
          Date := sDia+'/'+'01'+'/'+sYear;
         end
        else
        begin
          Date := sDia+'/'+IntToStr(Month)+'/'+sYear;
        end;

         dFecha := StrTodate(Date);
         cFecha := DateTostr(dFecha);

         cFecha2 := '31/12/'+sYear;


         sql.Clear;
         Close;
        Sql.Add('insert into #TempPeri');
        sql.add('Values('+QuotedStr(cFecha)+','+QuotedStr(cFecha2)+')');
         ExecSQL;
        end;
         With query2 do
        begin
          sql.clear;
          close;
          sql.add('select * from #TempPeri');
          open;
        end;
       end;{=============Anual==================}
 end;
end;

Última edición por jachguate fecha: 02-11-2006 a las 15:10:39.
Responder Con Cita
  #8  
Antiguo 02-11-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Hola.

Me tomé la libertad de editar tu mensaje para añadir la etiqueta [delphi]. ¡La diferencia en la presentación del código es notable!.

Para aprender su uso, podes editar tu mensaje o bien seguir en mi firma el vínculo a la etiqueta [code], cuyo uso es idéntico.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #9  
Antiguo 31-10-2006
OscarRd OscarRd is offline
Miembro
 
Registrado: sep 2006
Posts: 14
Poder: 0
OscarRd Va por buen camino
Agradeceria mucho tu colaboracion...

pido disculpa por mi desconocimiento en esta valioasa herramienta
pero como dije al principio soy nuevo en Delphi




Cita:
Empezado por vtdeleon
Saludos

No he leido todo el hilo, pero creo que el incoveniente es por las quicenas.

Los meses son irregulares, es decir, terminan tanto en dias 30 como en 31, hasta en 28 y 29 en el caso de febrero.

Conseguir la primera quicena es facil pues todo mes tiene dia 15's, pero ¿como conseguimos el ultimo dia de cada mes?, Hmm facil, yendonos al dia 1 de cada mes y restarle un dia. Voila (Se escribira asi? )

Creo que desarrollar un procedimiento o funcion no se te seria dificil, verdad?, sino aqui estamos.

Suerte.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Obtener tiempo entre fechas YaninaGenia Oracle 5 04-05-2006 20:46:20
función para obtener diferencias entre fechas - Firebird clanmilano SQL 1 11-11-2005 13:29:52
Las horribles fechas, control de fechas Huer OOP 6 18-10-2005 19:11:49
Backup de tablas especificas Marcos Firebird e Interbase 2 18-02-2005 15:20:16
Pintar Celdillas especificas en una grilla josem Conexión con bases de datos 2 19-07-2004 20:57:17


La franja horaria es GMT +2. Ahora son las 11:46:49.


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