la cuestion es la siguiente, realice un metodo es c# que me determina la diferencia entre dos fechas que pertenecen a los periodos de mi año fiscal que a diferencia de los meses normales unos duran 27 o 30 o 29, 26 dias etc. yo de acuerdo a esto tengo que convertir los dias que comprenden a periodo actual en semanas por ejemplo si el periodo en el que estoy ahora es el 2 y dura 27 dias lo tengo que combertir a semanas indicando primero que una semana coresponde a 7 dias, si embargo si yo divido lo 27 dias de mi periodo entre lo 7 dia que deve tener cada semana solo me alcanza para 3 semanas de 7 dias y una de 6, esto es lo que le devo indicar a mi programa que no importa si mi periodo fiscal actual que traigo de mi BD TIENE 29 dias, las semanas serian 4 semanas de 7 dias y 1 de un solo dia, ¿pero como divido mi periodo y indico que los dias los combierta a semanas de las manera anterior como lo explique? el motivo por que quiero eso es por que estoy aciendo una apliacion para la administracion de presupuestos y tengo que dividir el presupuesto en las semanas que comprendan al periodo y deacuerdo a esto sacar un porcentage y aser un semaforo si enla primera semana
ya se consumio mas del 25% que corresponde al presupuesto asignado poner una alerta en color rojo etc. por ese motivo nesesito sacar las semanas que comprenden el periodo y dividir en presuuesto entre el porcentage que comprenda cada semana
asta ahora loque tengo es eso con est METODO calculo los dias de diferencia
private void asiganarColores()
{
string fechaInicio = "";
string fechaFin = "";
cuenta.FechaInicio(fechaInicio);//varriable que me trae la fecha de inicio de mi año fiscal DE LA BD
fechaInicio = eCuenta.FechaInicio;//variable que me trae la fecha de fin de mi año fiscal de la BD
cuenta.FechaFin(fechaFin);
fechaFin = eCuenta.FechaFin;
DateTime oldDate = DateTime.Parse(fechaInicio);
DateTime newDate = DateTime.Parse(fechaFin);
// Difference in days, hours, and minutes.
TimeSpan ts = newDate - oldDate;
// Difference in days.
int differenceInDays = ts.Days;
String numeroDias = differenceInDays.ToString();
int num=int.Parse(numeroDias);
int semanas = num / 7;
Literal sald = (Literal)GridView2.Rows[0].FindControl("sald");
sald.Text = semanas.ToString();
}
/////////////////
CON ESTE METODO CAMBIO LOS COLORES DE LA COSULTA QUE hASE EL GRID de LAS TABLAS DE LA BD DE ACUERDO AL VALOR DEL PORCENTAGE GASTADO PERO AHUN NO EST DE ACUERDO ALAS SEMANAS
private void cambiarcolorGridPresupuesto()
{
int i = 0;
foreach (GridViewRow gvr in GridView2.Rows)
{
Literal tot = (Literal)GridView2.Rows[i].FindControl("porc");
GridViewRow gv = (GridViewRow)tot.NamingContainer;
if (gv.RowType == DataControlRowType.DataRow)
{
Double total = Double.Parse(tot.Text);
if (total > 0 && total <= 25)
{
gv.BackColor = System.Drawing.Color.Red;
}
if (total > 25 && total <= 50)
{
gv.BackColor = System.Drawing.Color.Yellow;
}
if (total > 50 && total <= 100)
{
gv.BackColor = System.Drawing.Color.Green;
}
//}
i++;
}
}
}
CON ESTE procedimiento almacenado TRAIGO MI ACTUAL PERIODO FISCAL DE LA BD DONDE LO NECESITO
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[pr_get_ebud_FisaclyPeriod]
*ActualFiscalPeriod varchar(2)
as
declare *BeginDate varchar(10)
declare *FiscalPeriod table
(
FscYear char(4),
FiscalPeriod tinyint,
BeginDate decimal(9,0),
EndDate decimal(9,0)
)
insert into *FiscalPeriod
select FscYear, substring(FiscalPeriod,8,2) FiscalPeriod, BeginDate, EndDate
from (select fscyear, bgndate1, bgndate2, bgndate3, bgndate4, bgndate5, bgndate6,
bgndate7, bgndate8, bgndate9, bgndate10, bgndate11, bgndate12,
enddate1, enddate2, enddate3, enddate4, enddate5, enddate6,
enddate7, enddate8, enddate9, enddate10, enddate11, enddate12
from mx001..csfsc FiscalPeriod where fscyear = datepart(year,getdate())) Main
unpivot (BeginDate for FiscalPeriod in (bgndate1, bgndate2, bgndate3, bgndate4, bgndate5, bgndate6,
bgndate7, bgndate8, bgndate9, bgndate10, bgndate11, bgndate12)) BeginOfDate
unpivot (EndDate for FiscalEnd in (enddate1, enddate2, enddate3, enddate4, enddate5, enddate6,
enddate7, enddate8, enddate9, enddate10, enddate11, enddate12)) EndOfDate
where right(FiscalPeriod,3) = right(FiscalEnd,3)
select *ActualFiscalPeriod = fiscalperiod from *fiscalperiod where begindate <= convert(char( ,getdate(), 112) and enddate >= convert(char( ,getdate(), 112)
select *BeginDate=BeginDate from *fiscalperiod where FiscalPeriod=*ActualFiscalPeriod
BEGIN
select BeginDate=CONVERT (varchar, CONVERT (datetime, *BeginDate), 103) from *fiscalperiod where FiscalPeriod=*ActualFiscalPeriod
END |