Files
SIG/RH/CalculoSBC.aspx.cs
JORGE LUIS CAUDILLO ESPARZA 54981499ae
2021-12-29 14:42:13 -07:00

337 lines
14 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Extensiones;
public partial class RH_CalculoSBC : ClsPaginas
{
private DataTable dtDetalleParteVariable
{
get
{
if (ViewState["dtDetalleParteVariable"] == null) { return null; }
else { return (DataTable)ViewState["dtDetalleParteVariable"]; }
}
set { ViewState["dtDetalleParteVariable"] = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//ADSNetLibrary.SIGAPI.Services.Agropecuaria.IAgropecuariaService servicioAgro = new ADSNetLibrary.SIGAPI.Services.Agropecuaria.AgropecuariaService(System.Configuration.ConfigurationManager.ConnectionStrings["Conexion"].ConnectionString);
//ADSNetLibrary.SIGAPI.Models.Agropecuaria.Request.ActividadGET acmo = new ADSNetLibrary.SIGAPI.Models.Agropecuaria.Request.ActividadGET();
//acmo.cveEmpresa = UsuarioActual.CveEmpresa; acmo.cveActividad = -1;
//var obj = servicioAgro.ActividadesGet(acmo);
//GVDetalleParteVariable.DataSource = obj.Result;
//GVDetalleParteVariable.DataBind();
}
}
protected void LnkCalcular_Click(object sender, EventArgs e)
{
using (ClsNominas objnom = new ClsNominas())
{
if (objnom.GetCalculoSBC(UsuarioActual.CveEmpresa, DdlTipo.SelectedValue.ToEntero(), TxtFechaPago.Text))
{
GVCalculosSBC.DataSource = objnom.DTSetResultados.Tables[0];
GVCFija.DataSource = objnom.DTSetResultados.Tables[0];
GVPV.DataSource = objnom.DTSetResultados.Tables[0];
if (objnom.DTSetResultados.Tables.Count > 1)
{
dtDetalleParteVariable = objnom.DTSetResultados.Tables[1];
GVDetalleParteVariable.DataSource = dtDetalleParteVariable;
GVDetalleParteVariable.DataBind();
}
}
}
GVCalculosSBC.DataBind();
GVCFija.DataBind();
GVPV.DataBind();
}
protected void LnkDownArchivosSua_Click(object sender, EventArgs e)
{
string concater = "";
//string MovtosAfil = "";
string MovtosmodSalario = "";
//string movtosBajas = "";
using (ClsRH ObjPersonal = new ClsRH())
{
if (ObjPersonal.GetMovimientosToSUA(UsuarioActual.CveEmpresa, TxtFechaPago.Text.ToDateTimeExcat("dd/MM/yyyy").ToString("yyyy-MM-dd"), TxtFechaPago.Text.ToDateTimeExcat("dd/MM/yyyy").ToString("yyyy-MM-dd")))
{
////01: MovtosAfil
//concater = "";
//foreach (var item in ObjPersonal.DtResultados.Select("Tipo=1"))
//{
// MovtosAfil = string.Format("{0}{1}{2}", MovtosAfil, concater, item["Movtotxt"]);
// concater = "\\r\\n";
//}
//02: MovtosmodSalario GVCalculosSBC
concater = "";
int contador = 0;
//foreach (var item in ObjPersonal.DtResultados.Select("Tipo=2"))
//{
// MovtosmodSalario = string.Format("{0}{1}{2}", MovtosmodSalario, concater, item["Movtotxt"]);
// concater = "\\r\\n";
// contador++;
//}
foreach (GridViewRow item in GVCalculosSBC.Rows)
{
double SalarioDiarioSSNuevo = Math.Round(item.DataKey("SalarioDiarioSSNuevo").ToDouble(), 2);
double SalarioDiarioSS = Math.Round(item.DataKey("SalarioDiarioSS").ToDouble(), 2);
if (SalarioDiarioSSNuevo != SalarioDiarioSS)
{
MovtosmodSalario = string.Format("{0}{1}{2}", MovtosmodSalario, concater, item.DataKey("Movtotxt"));
concater = "\\r\\n";
contador++;
}
}
MovtosmodSalario = string.Format("{0}{1}{2}", MovtosmodSalario, concater,
$"************* 00{(contador < 1000 ? "0" : "")}{(contador < 100 ? "0" : "")}{(contador < 10 ? "0" : "")}{contador} 00001 9");
////03: movtosBajas
//concater = "";
//foreach (var item in ObjPersonal.DtResultados.Select("Tipo=3"))
//{
// movtosBajas = string.Format("{0}{1}{2}", movtosBajas, concater, item["Movtotxt"]);
// concater = "\\r\\n";
//}
}
string rutarchivos = string.Format("{0}\\modificacionsalarios\\", UsuarioActual.Empresa.RutaArchivos);
if (!System.IO.Directory.Exists(rutarchivos))
{
System.IO.Directory.CreateDirectory(rutarchivos);
}
string namearchivoO = TxtFechaPago.Text.ToDateTimeExcat("dd/MM/yyyy").ToString("yyyy-MM-dd");
string namearchivo = namearchivoO;
int contadorz = 1;
while (System.IO.File.Exists(string.Format("{0}{1}", rutarchivos, namearchivo)))
{
namearchivo = string.Format("{0}({1})", namearchivoO, contadorz++);
}
System.IO.StreamWriter archivoW = null;
try { archivoW = new System.IO.StreamWriter(string.Format("{0}{1}", rutarchivos, namearchivo), true, System.Text.Encoding.UTF8); } catch (Exception) { }
if (archivoW != null)
{
try { archivoW.WriteLine(MovtosmodSalario); } catch (Exception) { }
try
{
archivoW.Close();
archivoW.Dispose();
}
catch (Exception) { }
}
RegistraScript(string.Format("SaveCsv(\"MovtosmodSalario{1:ddMMMyyyy}.txt\", '{0}');", MovtosmodSalario, TxtFechaPago.Text.ToDateTimeExcat("dd/MM/yyyy")));
//RegistraScript(string.Format("SaveCsv(\"MovtosAfil.txt\", '{0}');SaveCsv(\"MovtosmodSalario.txt\", '{1}');SaveCsv(\"movtosBajas.txt\", '{2}');", MovtosAfil.Replace("'", "\\'"), MovtosmodSalario.Replace("'", "\\'"), movtosBajas.Replace("'", "\\'")));
//RegistraScript("$('#DmodalGetSua').modal('hide');");
}
}
protected void LnkGuardarCambios_Click(object sender, EventArgs e)
{
string fecha = TxtFechaPago.Text.ToDateTimeExcat("dd/MM/yyyy").ToString("yyyy/MM/dd");
bool continuar = true;
using (ClsRH objrh = new ClsRH())
{
objrh.IniciaTransacSQL();
foreach (GridViewRow item in GVCalculosSBC.Rows)
{
int CvePersonal = item.DataKey("CvePersonal").ToEntero();//,,,
double SalarioDiario = item.DataKey("SalarioDiario").ToDouble();
double SDINuevo = item.DataKey("SDINuevo").ToDouble();
double SalarioDiarioSSNuevo = Math.Round(item.DataKey("SalarioDiarioSSNuevo").ToDouble(), 2);
double SalarioVariableNuevo = item.DataKey("SalarioVariableNuevo").ToDouble();
double SalarioDiarioSS = Math.Round(item.DataKey("SalarioDiarioSS").ToDouble(), 2);
if (continuar && SalarioDiarioSSNuevo != SalarioDiarioSS &&
(continuar = objrh.UpdateSalarios(CvePersonal, fecha, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, SalarioDiario, SDINuevo, SalarioDiarioSSNuevo, SalarioDiario)))
{
}
}
if (continuar)
{
objrh.Commit();
}
else
{
objrh.RollBack();
}
}
if (continuar)
{
Alert("Se registro la modificación de salario correctamente.");
LnkDownArchivosSua_Click(null, null);
}
else
{
}
/*
Using ObjPersonal As ClsRH = New ClsRH()
If ObjPersonal.UpdateSalarios(CvePersonal, TxtFechamodSalario.Text.ToDate().ToString("yyyy/MM/dd"),UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, TxtSalarioDiarioM.Text.ToDecimal(), TxtFISalarioDiarioIntegrado.Text.ToDecimal(), TxtFISalarioDiarioIntegrado.Text.ToDecimal(), TxtSalarioDiarioM.Text.ToDecimal()) Then
* */
}
protected void LnkDescargar_Click(object sender, EventArgs e)
{
DataTable dt = GVToDT(GVCalculosSBC, "Salario");
DataTable dtPF = GVToDT(GVCFija, "Parte fija");
DataTable dtPV = GVToDT(GVPV, "Parte variable");
dtDetalleParteVariable.TableName = "Detalle parte variable";
DataTable dtPVD = dtDetalleParteVariable;//GVToDT(GVDetalleParteVariable, "Detalle parte variable");
ClosedXML.Excel.XLWorkbook wb = new ClosedXML.Excel.XLWorkbook();
var libro = wb.AddWorksheet(dt);
var libroPF = wb.AddWorksheet(dtPF);
var libroPV = wb.AddWorksheet(dtPV);
var libroPVD = wb.AddWorksheet(dtPVD);
libro.ColumnsUsed().AdjustToContents();
libroPF.ColumnsUsed().AdjustToContents();
libroPV.ColumnsUsed().AdjustToContents();
libroPVD.ColumnsUsed().AdjustToContents();
libro.ColumnsUsed().AdjustToContents();
libro.Row(1).InsertRowsAbove(5);
libro.Range(1, 2, 1, 6).Merge().Value = UsuarioActual.Empresa.Empresa;
libro.Range(2, 2, 2, 6).Merge().Value = $"Reporte de calculo de sbc {TxtFechaPago.Text}.";
libro.Range(1, 2, 2, 6).Style.Font.SetBold(true);
libro.Range(1, 2, 2, 6).Style.Font.SetFontSize(16);
libro.Range(2, 2, 2, 6).Style.Font.SetFontSize(14);
libro.Range(1, 2, 2, 6).Style.Alignment.Horizontal = ClosedXML.Excel.XLAlignmentHorizontalValues.Center;
//libro.Range(3, 2, 3, 6).Merge().Value = $"del {fechai:dd/MM/yyyy} al {fechaf:dd/MM/yyyy}";
libro.Range(2, 7, 2, 9).Merge().Value = $"Fecha:{DateTime.Now:dd/MM/yyyy}";
libro.Range(3, 7, 3, 9).Merge().Value = $"Hora:{DateTime.Now:HH:mm}";
libro.Range(5, 6, 5, 9).Merge().Value = "Actual";
libro.Range(5, 10, 5, 12).Merge().Value = "Nuevo";
libro.Range(5, 1, 6, 14).Style.Alignment.Horizontal = ClosedXML.Excel.XLAlignmentHorizontalValues.Center;
libro.Range(5, 1, 6, 13).Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(79, 129, 189));
libro.Range(5, 1, 5, 13).Style.Border.BottomBorder = ClosedXML.Excel.XLBorderStyleValues.None;
libro.Range(5, 6, 6, 9).Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(128, 100, 162));
libro.Range(5, 6, 6, 9).Style.Font.FontColor = ClosedXML.Excel.XLColor.White;
libro.Range(5, 10, 6, 12).Style.Fill.SetBackgroundColor(ClosedXML.Excel.XLColor.FromArgb(136, 214, 205));
libro.Range(5, 10, 6, 12).Style.Font.FontColor = ClosedXML.Excel.XLColor.White;
libro.Range(7, 6, 7 + dt.Rows.Count, 12).Style.Alignment.Horizontal = ClosedXML.Excel.XLAlignmentHorizontalValues.Right;
libro.Range(7, 6, 7 + dt.Rows.Count, 12).Style.NumberFormat.Format = "$##,###,###,0.00";
System.IO.Stream fs = new System.IO.MemoryStream();
wb.SaveAs(fs);
fs.Position = 0;
System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();
using (System.IO.Stream input = fs)
{
input.CopyTo(memoryStream);
}
memoryStream.Position = 0;
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", string.Format("attachment;filename={0}.xlsx", "Salario"));
Response.BinaryWrite(memoryStream.ToArray());
Response.End();
}
public string limpiarcelda(string celdatext)
{
celdatext = celdatext.Replace("<br />", "\r\n").Replace(" ", " ");
while (celdatext.Contains(" "))
{
celdatext = celdatext.Replace(" ", " ");
}
celdatext = celdatext.Replace("\n ", " ");
celdatext = celdatext.Replace("\r ", " ");
return celdatext;
}
public DataTable GVToDT(GridView GridView, string NombreArchivoXLSX)
{
DataTable dt = new DataTable(NombreArchivoXLSX);
if (GridView != null && GridView.Rows.Count > 0)
{
int i = 0;
List<int> ArrColumnasVisibles = new List<int>(); // solo recorro las columnas visibles
foreach (TableCell cell in GridView.HeaderRow.Cells)
{
string titulo = HttpUtility.HtmlDecode(Extensiones.ModExtensiones.TextoCelda(cell)).Trim();
titulo = limpiarcelda(titulo);
if (GridView.Columns.Count > i && GridView.Columns[i].Visible && titulo.Length > 0)
{
if (dt.Columns.Contains(titulo))
titulo = titulo + i;
dt.Columns.Add(titulo);
ArrColumnasVisibles.Add(i);
}
i += 1;
}
i = 0;
foreach (GridViewRow row in GridView.Rows)
{
dt.Rows.Add();
i = 0;
foreach (int j in ArrColumnasVisibles)
{
dt.Rows[dt.Rows.Count - 1][i] = limpiarcelda(Extensiones.ModExtensiones.TextoCelda(row.Cells[j]).Replace("<br />", "\r\n"));
i = i + 1;
}
}
}
return dt;
}
protected void Lnkmostrararchivos_Click(object sender, EventArgs e)
{
string rutarchivos = string.Format("{0}\\modificacionsalarios\\", UsuarioActual.Empresa.RutaArchivos);
List<archivosD> lisaarchivos = new List<archivosD>();
foreach (var urfile in System.IO.Directory.GetFiles(rutarchivos, "*"))
{
if (urfile.Replace(rutarchivos, "").Length > 9)
{
string cfecha = urfile.Replace(rutarchivos, "").Substring(0, 10).ToDateTime().ToString("dd/MM/yyyy");
archivosD arch = new archivosD() { nombrearchivo = cfecha, ruta = urfile, fecha= System.IO.File.GetCreationTime(urfile) };
lisaarchivos.Add(arch);
}
}
GVDoctos.DataSource = lisaarchivos;
GVDoctos.DataBind();
UpModalDoctos.Update();
RegistraScript("$('#ModalDoctos').modal();");
}
}
public class archivosD
{
public string nombrearchivo { get; set; }
public string ruta { get; set; }
public DateTime fecha { get; set; }
}