269 lines
12 KiB
C#
269 lines
12 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, "2021-03-01", "2021-03-03"))
|
|
{
|
|
////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";
|
|
//}
|
|
|
|
}
|
|
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())
|
|
{
|
|
|
|
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)
|
|
{
|
|
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;
|
|
}
|
|
} |