337 lines
14 KiB
C#
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; }
|
|
} |