Facturación Cíclica

This commit is contained in:
2020-10-23 19:36:17 -07:00
parent 7767945406
commit 10bb67c424
7 changed files with 1269 additions and 331 deletions

View File

@@ -366,7 +366,7 @@ Partial Class Contratos_Default
'TxtArchivo.Visible = True
CargaDatos()
CargaCiclosComerciales()
CargaDatosAvance()
CargaDatosAvancePorDocumento()
CargaInventarios()
@@ -810,11 +810,14 @@ Partial Class Contratos_Default
cargaClientes()
Else
CargaContratista()
End If
End If
CargaPeriodos()
DdlPeriodo_SelectedIndexChanged(DdlPeriodo, EventArgs.Empty)
If DdlTipoContrato.SelectedValue = "14" Then
TrCtaEquipo.Visible = True
TrPeriodo.Visible = True
'TrPeriodo.Visible = True
RFVEstatus.ValidationGroup = ""
RequiredFieldValidator1.ValidationGroup = ""
DvMin.Visible = True
@@ -824,34 +827,31 @@ Partial Class Contratos_Default
RowEstatus.Visible = False
RowPorcentajeComision.Visible = False
dvAddendum.Visible = False
CargaPeriodos()
CargaPlantillas()
TrContratoPlantilla.Visible = True
TabPres.HeaderText = "Partidas"
Else
DtPeriodo = Nothing
End If
If DdlTipoContrato.SelectedValue = "25" Then
trLicitacion.Visible = False
divResponsable.Visible = False
TrPeriodo.Visible = True
CargaPeriodos()
trIva.Visible = False
trAnticipo.Visible = False
trAmortizacion.Visible = False
trPorGarantia.Visible = False
DvMin.Visible = False
RowFlexible.Visible = False
RowPorcentajeComision.Visible = False
DvMax.Visible = False
DvTotal.Visible = False
RowEstatus.Visible = False
TabPres.HeaderText = "Partidas"
DdlSubProyectoContrato.AutoPostBack = True
DvObservaciones.Visible = True
End If
'If DdlTipoContrato.SelectedValue = "25" Then
' trLicitacion.Visible = False
' divResponsable.Visible = False
' 'TrPeriodo.Visible = True
' trIva.Visible = False
' trAnticipo.Visible = False
' trAmortizacion.Visible = False
' trPorGarantia.Visible = False
' DvMin.Visible = False
' RowFlexible.Visible = False
' RowPorcentajeComision.Visible = False
' DvMax.Visible = False
' DvTotal.Visible = False
' RowEstatus.Visible = False
' TabPres.HeaderText = "Partidas"
' DdlSubProyectoContrato.AutoPostBack = True
' 'DvObservaciones.Visible = True
'End If
Dim CveTipoContrato = DdlTipoContrato.SelectedValue
@@ -879,9 +879,9 @@ Partial Class Contratos_Default
End If
ObjFolios.Dispose()
UpGral.Update()
End Sub
End Sub
#End Region
#Region " CARGA DATOS "
Private Sub CargaDatos()
Dim ObjContratos As New ClsContratos()
@@ -935,10 +935,11 @@ Partial Class Contratos_Default
CargaContratoPadre()
CargaContratoAddendum()
If ObjContratos.DtResultados.Rows(0)("CveContratoTipo").ToString.ToEntero = 14 Then
CargaPeriodos()
TrCtaEquipo.Visible = True
TrPeriodo.Visible = True
'TrPeriodo.Visible = True
RFVEstatus.ValidationGroup = ""
RequiredFieldValidator1.ValidationGroup = ""
DvMin.Visible = True
@@ -957,54 +958,69 @@ Partial Class Contratos_Default
TabPres.HeaderText = "Partidas"
End If
If ObjContratos.DtResultados.Rows(0)("CveContratoTipo").ToString.ToEntero = 25 Then
trLicitacion.Visible = False
divResponsable.Visible = False
TrPeriodo.Visible = True
CargaPeriodos()
trIva.Visible = False
trAnticipo.Visible = False
trAmortizacion.Visible = False
trPorGarantia.Visible = False
DvMin.Visible = False
DvMax.Visible = False
DvTotal.Visible = False
TabPVInsumos.Visible = False
RowEstatus.Visible = False
TabPres.HeaderText = "Partidas"
thOcCliente.Style.Add("display", "none")
tdOcCliente.Style.Add("display", "none")
thNoIdentificacionv.Style.Add("display", "none")
thLimitar.Style.Add("display", "none")
tdLimitar2.Style.Add("display", "none")
tdNoIdentificacionv.Style.Add("display", "none")
RowFlexible.Visible = False
TableDatosCabecera.Visible = False
TabAvanveDocumento.Visible = False
TabSistema.Visible = False
RowPorcentajeComision.Visible = False
TabContratosGastos.Visible = False
tdCveInterna.Text = ""
tdLimitar.Text = ""
tdOC.Text = ""
THAvance.Visible = False
THAvance.Style.Add("display", "none")
TDAvance.Style.Add("display", "none")
TxtOCInterna.Visible = False
TxtNoIdentificacionv.Visible = False
ChkLimitarVenta.Visible = False
DvObservaciones.Visible = True
TDObservacion.Visible = True
tdObservaciones.Visible = True
TxtObservaciones.Text = ObjContratos.DtResultados.Rows(0)("Observaciones").ToString
Gv.Columns(6).Visible = True
DdlPeriodo.SelectedValueExist(ObjContratos.DtResultados.Rows(0)("CvePeriodo").ToString)
End If
'If ObjContratos.DtResultados.Rows(0)("CveContratoTipo").ToString.ToEntero = 25 Then
' trLicitacion.Visible = False
' divResponsable.Visible = False
' 'TrPeriodo.Visible = True
' CargaPeriodos()
' trIva.Visible = False
' trAnticipo.Visible = False
' trAmortizacion.Visible = False
' trPorGarantia.Visible = False
' DvMin.Visible = False
' DvMax.Visible = False
' DvTotal.Visible = False
' TabPVInsumos.Visible = False
' RowEstatus.Visible = False
' TabPres.HeaderText = "Partidas"
' thOcCliente.Style.Add("display", "none")
' tdOcCliente.Style.Add("display", "none")
' thNoIdentificacionv.Style.Add("display", "none")
' thLimitar.Style.Add("display", "none")
' tdLimitar2.Style.Add("display", "none")
' tdNoIdentificacionv.Style.Add("display", "none")
' RowFlexible.Visible = False
' TableDatosCabecera.Visible = False
' TabAvanveDocumento.Visible = False
' TabSistema.Visible = False
' RowPorcentajeComision.Visible = False
' TabContratosGastos.Visible = False
' tdCveInterna.Text = ""
' tdLimitar.Text = ""
' tdOC.Text = ""
' THAvance.Visible = False
' THAvance.Style.Add("display", "none")
' TDAvance.Style.Add("display", "none")
' TxtOCInterna.Visible = False
' TxtNoIdentificacionv.Visible = False
' ChkLimitarVenta.Visible = False
' 'DvObservaciones.Visible = True
' TDObservacion.Visible = True
' tdObservaciones.Visible = True
' TxtObservaciones.Text = ObjContratos.DtResultados.Rows(0)("Observaciones").ToString
' Gv.Columns(6).Visible = True
' DdlPeriodo.SelectedValueExist(ObjContratos.DtResultados.Rows(0)("CvePeriodo").ToString)
'End If
If ObjContratos.DtResultados.Rows(0)("CveVendedor").ToString.ToEntero > 0 Then
DdlVendedor.SelectedValueExist(ObjContratos.DtResultados.Rows(0)("CveVendedor"))
End If
ChkAplicaFacCiclica.Checked = CBool(ObjContratos.DtResultados.Rows(0)("FacturacionCicilica"))
If ChkAplicaFacCiclica.Checked Then
CargaPeriodos()
ChkFacAutomatica.Checked = CBool(ObjContratos.DtResultados.Rows(0)("FacturacionCiclicaAutomatico"))
DdlPeriodo.SelectedValueExist(ObjContratos.DtResultados.Rows(0)("CvePeriodo"))
DdlPeriodo_SelectedIndexChanged(DdlPeriodo, EventArgs.Empty)
DdlDiaFact.SelectedValueExist(ObjContratos.DtResultados.Rows(0)("DiaMesFacturacion").ToString())
TxtObservaciones.Text = ObjContratos.DtResultados.Rows(0)("Observaciones").ToString
ChkAplicaFacCiclica_CheckedChanged(ChkAplicaFacCiclica, EventArgs.Empty)
End If
If (DdlAlmacenDestino.Items.FindByValue(ObjContratos.CveAlmacen.ToString()) Is Nothing) Then
Dim dr As DataRow = GlobalDTAlmacen(UsuarioActual.CveEmpresa).FiltroPrimero(String.Format("CveAlmacen = {0}", ObjContratos.CveAlmacen))
@@ -1224,10 +1240,10 @@ Partial Class Contratos_Default
Maximo = txtMaximo.Text.ToDouble
Total = TxtTotal.Text.ToDouble
If DdlTipoContrato.SelectedValue = "25" AndAlso DdlPeriodo.SelectedValue.ToEntero() <= 0 Then
Alert("Debe seleccionar el periodo de facturación.", TipoMensaje.MsgAdvertencia)
Exit Sub
End If
'If DdlTipoContrato.SelectedValue = "25" AndAlso DdlPeriodo.SelectedValue.ToEntero() <= 0 Then
' Alert("Debe seleccionar el periodo de facturación.", TipoMensaje.MsgAdvertencia)
' Exit Sub
'End If
If DdlMoneda.SelectedIndex > 0 Then
If TxtTipoCambio.Text.Trim.Length = 0 Or TxtTipoCambio.Text.Trim.ToDouble = 0.0 Then
@@ -1246,207 +1262,195 @@ Partial Class Contratos_Default
Dim ObjContratos As New ClsContratos
Dim ObjInventarios As New ClsInventarios(ObjContratos.IniciaTransacSQL)
'Crear Contrato
If Not CveContrato > 0 Then
Try
'Crear Contrato
If Not CveContrato > 0 Then
CveContrato = ObjContratos.AddContratos(TxtNumeroContrato.Text, TxtDescripcionContrato.Text, TxtNumeroLicitacion.Text.Trim, DdlContratista.SelectedValue.ToEntero, DdlCliente.SelectedValue.ToEntero, -1, TxtFechaInicial.Text.ToDate, TxtFechaFinal.Text.ToDate,
TxtUbicacion.Text, TxtResponsable.Text, DdlSubProyectoContrato.SelectedValue.ToEntero, TxtPorIVA.Text.ToDouble, TxtPorAnticipo.Text.ToDouble, TxtPorAmortizacionAnticipo.Text.ToDouble,
TxtPorGarantia.Text.ToDouble, "." & Session("FileExtension").ToString, "", DdlContratoPadre.SelectedValue.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, False, Minimo, Maximo, Total,
DdlMoneda.SelectedValue.ToEntero, ModalidadDetalle, If(DdlTipoContrato.SelectedValue.ToEntero = 25 OrElse UsuarioActual.Empresa.CvePlataforma = 3, 1, DdlEstatus.SelectedValue.ToEntero), TipoContrato,
TxtTipoCambio.Text.ToDouble, CveSucursalCliente:=DdlSucursalCliente.SelectedValue.ToEntero, CveAlmacenOrigen:=DdlAlmacenOrigen.SelectedValue.ToEntero, CveAlmacenDestino:=DdlAlmacenDestino.SelectedValue.ToEntero,
PorcentajeComision:=TxtPorcentajeComision.Text.ToEntero, TipoGarantia:=DdlTipoGarantia.SelectedValue.ToEntero, Folio:=TxtFolio.Text.ToEntero, FechaVenc:=txtFechaVenc.Text.ToDate, EstatusFianza:=DdlEstatusFianza.SelectedValue.ToEntero,
CvePeriodo:=DdlPeriodo.SelectedValue.ToEntero, CveCuentaEquipo:=DdlCuentaEquipo.SelectedValue.ToEntero, CveContratoPlantilla:=DdlPlantillaContrato.SelectedValue.ToEntero, CveVendedor:=DdlVendedor.SelectedValue.ToEntero,
Observaciones:=TxtObservaciones.Text, CveDireccionEnvio:=DdlClienteDireccionEnvio.SelectedValue.ToEntero, AplicaImpuestosLocales:=ChkImpuestosLocales.Checked, CorreoNotificacionPedDev:=TxtCorreoNotificacion.Text.Trim(),
FacturacionCicilica:=ChkAplicaFacCiclica.Checked, FacturacionCiclicaAutomatico:=ChkFacAutomatica.Checked, DiaMesFacturacion:=DdlDiaFact.SelectedValue.ToEntero())
TieneError = Not GuardaFianzas(ObjContratos)
If CveContrato > 0 AndAlso Not TieneError Then
'Renombrar archivo
If ViewState("extencion") IsNot Nothing Then
If ViewState("FUrl").ToString.Length > 0 AndAlso ViewState("extencion").ToString.Length > 0 Then
If Not Directory.Exists(ModExtensiones.DirectorioBaseEmpresas + "Empresas\" & UsuarioActual.CveEmpresa & "\Contratos") Then
Directory.CreateDirectory(ModExtensiones.DirectorioBaseEmpresas + "Empresas\" & UsuarioActual.CveEmpresa & "\Contratos")
End If
Ruta = ModExtensiones.DirectorioBaseEmpresas + "Empresas\" & UsuarioActual.CveEmpresa & "\Contratos\"
'ViewState("extencion") = FileExtension
'ViewState("FUrl") = Path.Combine(UsuarioActual.Empresa.Ruta, "Contratos", "Temp", ViewState("FName").ToString)
Try
If File.Exists(String.Format("{0}{1}.{2}", Ruta, CveContrato.ToString, ViewState("extencion").ToString)) Then
File.Delete(String.Format("{0}{1}.{2}", Ruta, CveContrato.ToString, ViewState("extencion").ToString))
End If
System.IO.File.Move(ViewState("FUrl").ToString, String.Format("{0}{1}.{2}", Ruta, CveContrato.ToString, ViewState("extencion").ToString))
Catch ex As Exception
End Try
End If
End If
'If UsuarioActual.Empresa.CvePlataforma = 3 AndAlso DdlTipoContrato.SelectedValue = "14" Then
' Dim FechaI As DateTime = TxtFechaInicial.Text.ToDateTime
' Dim FechaF As DateTime = TxtFechaFinal.Text.ToDateTime
' Dim Periodo As Integer = DtPeriodo.FiltraParametros($"CvePeriodo = {DdlPeriodo.SelectedValue.ToEntero}").Rows(0)("Dias").ToString.ToEntero
' Dim VigenciaEnDias As Double = DateDiff(DateInterval.Day, FechaI, FechaF)
' Dim CiclosComerciales As Integer = Math.Round(VigenciaEnDias / Periodo).ToEntero
' For Ciclo As Integer = 1 To CiclosComerciales
' If Not ObjContratos.CicloComercialAdd(CveContrato, -1, DdlCliente.SelectedValue.ToEntero, False, -1, 1, UsuarioActual.CveEmpresa, FechaI.AddDays(Periodo * Ciclo)) Then TieneError = True : Exit For
' Next
'End If
If ChkAplicaFacCiclica.Checked Then
TieneError = Not GenerarCiclosComerciales(CveContrato, False, ObjContratos)
End If
If TxtNumeroContrato.Text = FolioSugerido Then
Dim ObjFolios As New ClsGralFolios
If Not ObjFolios.UpdateFolioActual(DdlSubProyectoContrato.SelectedValue.ToEntero, "Con", True, UsuarioActual.CveEmpresa) Then
TieneError = True
End If
ObjFolios.Dispose()
End If
If ChkImpuestosLocales.Checked Then
Dim count As Integer = 0
For Each GVR As GridViewRow In GvImpuestosLocales.Rows
If GVR.FCCheckBox("ChkDeduccion").Checked Then
count = count + 1
ObjContratos.AddContratoImpuestosLocales(CveContrato, GVR.DataKey("CveImpuestoLocal").ToEntero)
End If
Next
If count = 0 Then
Alert("Debe seleccionar un Impuesto Local", TipoMensaje.MsgAdvertencia)
TieneError = True
End If
End If
Else
TieneError = True
End If
Else
Modificado = True
Dim ArchivoUpdate As String = "-1"
If Session("FileExtension").ToString <> "" Then
ArchivoUpdate = "." & Session("FileExtension").ToString
Else
End If
If ObjContratos.UpdateContratos(CveContrato, TxtNumeroContrato.Text, TxtDescripcionContrato.Text, TxtNumeroLicitacion.Text.Trim, DdlContratista.SelectedValue.ToEntero, DdlCliente.SelectedValue.ToEntero, -1, TxtFechaInicial.Text.ToDate, TxtFechaFinal.Text.ToDate,
TxtUbicacion.Text, TxtResponsable.Text, DdlSubProyectoContrato.SelectedValue.ToEntero, TxtPorIVA.Text.ToDouble, TxtPorAnticipo.Text.ToDouble, TxtPorAmortizacionAnticipo.Text.ToDouble,
TxtPorGarantia.Text.ToDouble, ArchivoUpdate, "", DdlContratoPadre.SelectedValue.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, False, Minimo, Maximo, Total, DdlMoneda.SelectedValue.ToEntero,
ModalidadDetalle, If(UsuarioActual.Empresa.CvePlataforma = 3 OrElse CveTipoContrato = 25, 1, DdlEstatus.SelectedValue.ToEntero), TipoContrato, TxtTipoCambio.Text.ToDouble, CveSucursalCliente:=DdlSucursalCliente.SelectedValue.ToEntero,
CveAlmacenOrigen:=DdlAlmacenOrigen.SelectedValue.ToEntero, CveAlmacenDestino:=DdlAlmacenDestino.SelectedValue.ToEntero, PorcentajeComision:=TxtPorcentajeComision.Text.ToEntero,
TipoGarantia:=DdlTipoGarantia.SelectedValue.ToEntero, Folio:=TxtFolio.Text.ToEntero, FechaVenc:=txtFechaVenc.Text.ToDate, EstatusFianza:=DdlEstatusFianza.SelectedValue.ToEntero, CveContratoPlantilla:=DdlPlantillaContrato.SelectedValue.ToEntero,
CveCuentaEquipo:=DdlCuentaEquipo.SelectedValue.ToEntero, CveVendedor:=DdlVendedor.SelectedValue.ToEntero, Observaciones:=TxtObservaciones.Text, CveDireccionEnvio:=DdlClienteDireccionEnvio.SelectedValue.ToEntero, AplicaImpuestosLocales:=ChkImpuestosLocales.Checked,
CorreoNotificacionPedDev:=TxtCorreoNotificacion.Text.Trim(), FacturacionCicilica:=ChkAplicaFacCiclica.Checked, FacturacionCiclicaAutomatico:=ChkFacAutomatica.Checked, DiaMesFacturacion:=DdlDiaFact.SelectedValue.ToEntero(), CvePeriodo:=DdlPeriodo.SelectedValue.ToEntero()) Then
TieneError = Not GuardaFianzas(ObjContratos)
'Renombrar archivo
If Not TieneError Then
'If UsuarioActual.Empresa.CvePlataforma = 3 AndAlso DdlTipoContrato.SelectedValue = "14" Then
' If Not ObjContratos.CicloComercialDelete(CveContrato, False, UsuarioActual.CveEmpresa) Then
' TieneError = True
' End If
' Dim FechaIN As DateTime = TxtFechaInicial.Text.ToDateTime
' Dim FechaFN As DateTime = TxtFechaFinal.Text.ToDateTime
' Dim Periodo As Integer = DtPeriodo.FiltraParametros($"CvePeriodo = {DdlPeriodo.SelectedValue.ToEntero}").Rows(0)("Dias").ToString.ToEntero
' Dim VigenciaEnDias As Double = DateDiff(DateInterval.Day, FechaI, FechaF)
' Dim CiclosComerciales As Integer = Math.Round(VigenciaEnDias / Periodo).ToEntero
' For Ciclo As Integer = 1 To CiclosComerciales
' If Not ObjContratos.CicloComercialAdd(CveContrato, -1, DdlCliente.SelectedValue.ToEntero, False, -1, 1, UsuarioActual.CveEmpresa, FechaI.AddDays(Periodo * Ciclo)) Then TieneError = True : Exit For
' Next
'End If
If ChkAplicaFacCiclica.Checked Then
TieneError = Not GenerarCiclosComerciales(CveContrato, True, ObjContratos)
Else
If Not ObjContratos.CicloComercialDelete(CveContrato, False, UsuarioActual.CveEmpresa) Then
TieneError = True
End If
End If
If ViewState("extencion") IsNot Nothing Then
If ViewState("FUrl").ToString.Length > 0 AndAlso ViewState("extencion").ToString.Length > 0 Then
If Not Directory.Exists(ModExtensiones.DirectorioBaseEmpresas + "Empresas\" & UsuarioActual.CveEmpresa & "\Contratos") Then
Directory.CreateDirectory(ModExtensiones.DirectorioBaseEmpresas + "Empresas\" & UsuarioActual.CveEmpresa & "\Contratos")
End If
Ruta = ModExtensiones.DirectorioBaseEmpresas + "Empresas\" & UsuarioActual.CveEmpresa & "\Contratos\"
Try
If File.Exists(String.Format("{0}{1}.{2}", Ruta, CveContrato.ToString, ViewState("extencion").ToString)) Then
File.Delete(String.Format("{0}{1}.{2}", Ruta, CveContrato.ToString, ViewState("extencion").ToString))
End If
System.IO.File.Move(ViewState("FUrl").ToString, String.Format("{0}{1}.{2}", Ruta, CveContrato.ToString, ViewState("extencion").ToString))
Catch ex As Exception
End Try
' System.IO.File.Move(Archivo, String.Format("{0}{1}{2}", Ruta, CveContrato.ToString, Extension))
End If
End If
If ChkImpuestosLocales.Checked Then
Dim count As Integer = 0
ObjContratos.LimpiaImpuestosLocales(CveContrato)
For Each GVR As GridViewRow In GvImpuestosLocales.Rows
If GVR.FCCheckBox("ChkDeduccion").Checked Then
count = count + 1
ObjContratos.AddContratoImpuestosLocales(CveContrato, GVR.DataKey("CveImpuestoLocal").ToEntero)
End If
Next
If count = 0 Then
Alert("Debe seleccionar un Impuesto Local", TipoMensaje.MsgAdvertencia)
TieneError = True
End If
Else
ObjContratos.LimpiaImpuestosLocales(CveContrato)
End If
End If
Else
TieneError = True
End If
End If
Catch ex As Exception
TieneError = True
OnError("Ocurrió un error al guardar el contrato.", ex)
End Try
CveContrato = ObjContratos.AddContratos(TxtNumeroContrato.Text, TxtDescripcionContrato.Text, TxtNumeroLicitacion.Text.Trim, DdlContratista.SelectedValue.ToEntero, DdlCliente.SelectedValue.ToEntero, -1, TxtFechaInicial.Text.ToDate, TxtFechaFinal.Text.ToDate,
TxtUbicacion.Text, TxtResponsable.Text, DdlSubProyectoContrato.SelectedValue.ToEntero, TxtPorIVA.Text.ToDouble, TxtPorAnticipo.Text.ToDouble, TxtPorAmortizacionAnticipo.Text.ToDouble,
TxtPorGarantia.Text.ToDouble, "." & Session("FileExtension").ToString, "", DdlContratoPadre.SelectedValue.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, False, Minimo, Maximo, Total,
DdlMoneda.SelectedValue.ToEntero, ModalidadDetalle, If(DdlTipoContrato.SelectedValue.ToEntero = 25 OrElse UsuarioActual.Empresa.CvePlataforma = 3, 1, DdlEstatus.SelectedValue.ToEntero), TipoContrato,
TxtTipoCambio.Text.ToDouble, CveSucursalCliente:=DdlSucursalCliente.SelectedValue.ToEntero, CveAlmacenOrigen:=DdlAlmacenOrigen.SelectedValue.ToEntero, CveAlmacenDestino:=DdlAlmacenDestino.SelectedValue.ToEntero,
PorcentajeComision:=TxtPorcentajeComision.Text.ToEntero, TipoGarantia:=DdlTipoGarantia.SelectedValue.ToEntero, Folio:=TxtFolio.Text.ToEntero, FechaVenc:=txtFechaVenc.Text.ToDate, EstatusFianza:=DdlEstatusFianza.SelectedValue.ToEntero,
CvePeriodo:=DdlPeriodo.SelectedValue.ToEntero, CveCuentaEquipo:=DdlCuentaEquipo.SelectedValue.ToEntero, CveContratoPlantilla:=DdlPlantillaContrato.SelectedValue.ToEntero, CveVendedor:=DdlVendedor.SelectedValue.ToEntero,
Observaciones:=TxtObservaciones.Text, CveDireccionEnvio:=DdlClienteDireccionEnvio.SelectedValue.ToEntero, AplicaImpuestosLocales:=ChkImpuestosLocales.Checked, CorreoNotificacionPedDev:=TxtCorreoNotificacion.Text.Trim())
TieneError = Not GuardaFianzas(ObjContratos)
If CveContrato > 0 AndAlso Not TieneError Then
'Renombrar archivo
If ViewState("extencion") IsNot Nothing Then
If ViewState("FUrl").ToString.Length > 0 AndAlso ViewState("extencion").ToString.Length > 0 Then
If Not Directory.Exists(ModExtensiones.DirectorioBaseEmpresas + "Empresas\" & UsuarioActual.CveEmpresa & "\Contratos") Then
Directory.CreateDirectory(ModExtensiones.DirectorioBaseEmpresas + "Empresas\" & UsuarioActual.CveEmpresa & "\Contratos")
End If
Ruta = ModExtensiones.DirectorioBaseEmpresas + "Empresas\" & UsuarioActual.CveEmpresa & "\Contratos\"
'ViewState("extencion") = FileExtension
'ViewState("FUrl") = Path.Combine(UsuarioActual.Empresa.Ruta, "Contratos", "Temp", ViewState("FName").ToString)
Try
If File.Exists(String.Format("{0}{1}.{2}", Ruta, CveContrato.ToString, ViewState("extencion").ToString)) Then
File.Delete(String.Format("{0}{1}.{2}", Ruta, CveContrato.ToString, ViewState("extencion").ToString))
End If
System.IO.File.Move(ViewState("FUrl").ToString, String.Format("{0}{1}.{2}", Ruta, CveContrato.ToString, ViewState("extencion").ToString))
Catch ex As Exception
End Try
End If
End If
If UsuarioActual.Empresa.CvePlataforma = 3 AndAlso DdlTipoContrato.SelectedValue = "14" Then
Dim FechaI As DateTime = TxtFechaInicial.Text.ToDateTime
Dim FechaF As DateTime = TxtFechaFinal.Text.ToDateTime
Dim Periodo As Integer = DtPeriodo.FiltraParametros($"CvePeriodo = {DdlPeriodo.SelectedValue.ToEntero}").Rows(0)("Dias").ToString.ToEntero
Dim VigenciaEnDias As Double = DateDiff(DateInterval.Day, FechaI, FechaF)
Dim CiclosComerciales As Integer = Math.Round(VigenciaEnDias / Periodo).ToEntero
For Ciclo As Integer = 1 To CiclosComerciales
If Not ObjContratos.CicloComercialAdd(CveContrato, -1, DdlCliente.SelectedValue.ToEntero, False, -1, 1, UsuarioActual.CveEmpresa, FechaI.AddDays(Periodo * Ciclo)) Then TieneError = True : Exit For
Next
ElseIf DdlTipoContrato.SelectedValue = "25" Then
Dim FechaI As DateTime = TxtFechaInicial.Text.ToDateTime
Dim FechaF As DateTime = TxtFechaFinal.Text.ToDateTime
If FechaI >= DateTime.Today Then
If Not ObjContratos.CicloComercialAdd(CveContrato, -1, DdlCliente.SelectedValue.ToEntero, False, -1, 1, UsuarioActual.CveEmpresa, FechaI) Then TieneError = True
End If
Dim Periodo As Integer = DtPeriodo.FiltroPrimeroValor("Meses", $"CvePeriodo = {DdlPeriodo.SelectedValue.ToEntero}").ToEntero
Dim VigenciaMeses As Double = DateDiff(DateInterval.Month, FechaI, FechaF)
Dim CiclosComerciales As Integer = Math.Ceiling(VigenciaMeses / Periodo).ToEntero
For Ciclo As Integer = 1 To CiclosComerciales
If Not ObjContratos.CicloComercialAdd(CveContrato, -1, DdlCliente.SelectedValue.ToEntero, False, -1, 1, UsuarioActual.CveEmpresa, If(FechaI.AddMonths(Periodo * Ciclo) > FechaF, FechaF, FechaI.AddMonths(Periodo * Ciclo))) Then TieneError = True : Exit For
Next
End If
If TxtNumeroContrato.Text = FolioSugerido Then
Dim ObjFolios As New ClsGralFolios
If Not ObjFolios.UpdateFolioActual(DdlSubProyectoContrato.SelectedValue.ToEntero, "Con", True, UsuarioActual.CveEmpresa) Then
TieneError = True
End If
ObjFolios.Dispose()
End If
If ChkImpuestosLocales.Checked Then
Dim count As Integer = 0
For Each GVR As GridViewRow In GvImpuestosLocales.Rows
If GVR.FCCheckBox("ChkDeduccion").Checked Then
count = count + 1
ObjContratos.AddContratoImpuestosLocales(CveContrato, GVR.DataKey("CveImpuestoLocal").ToEntero)
End If
Next
If count = 0 Then
Alert("Debe seleccionar un Impuesto Local", TipoMensaje.MsgAdvertencia)
TieneError = True
End If
End If
Else
TieneError = True
End If
Else
Modificado = True
Dim ArchivoUpdate As String = "-1"
If Session("FileExtension").ToString <> "" Then
ArchivoUpdate = "." & Session("FileExtension").ToString
Else
End If
If ObjContratos.UpdateContratos(CveContrato, TxtNumeroContrato.Text, TxtDescripcionContrato.Text, TxtNumeroLicitacion.Text.Trim, DdlContratista.SelectedValue.ToEntero, DdlCliente.SelectedValue.ToEntero, -1, TxtFechaInicial.Text.ToDate, TxtFechaFinal.Text.ToDate,
TxtUbicacion.Text, TxtResponsable.Text, DdlSubProyectoContrato.SelectedValue.ToEntero, TxtPorIVA.Text.ToDouble, TxtPorAnticipo.Text.ToDouble, TxtPorAmortizacionAnticipo.Text.ToDouble,
TxtPorGarantia.Text.ToDouble, ArchivoUpdate, "", DdlContratoPadre.SelectedValue.ToEntero, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, False, Minimo, Maximo, Total, DdlMoneda.SelectedValue.ToEntero,
ModalidadDetalle, If(UsuarioActual.Empresa.CvePlataforma = 3 OrElse CveTipoContrato = 25, 1, DdlEstatus.SelectedValue.ToEntero), TipoContrato, TxtTipoCambio.Text.ToDouble, CveSucursalCliente:=DdlSucursalCliente.SelectedValue.ToEntero,
CveAlmacenOrigen:=DdlAlmacenOrigen.SelectedValue.ToEntero, CveAlmacenDestino:=DdlAlmacenDestino.SelectedValue.ToEntero, PorcentajeComision:=TxtPorcentajeComision.Text.ToEntero,
TipoGarantia:=DdlTipoGarantia.SelectedValue.ToEntero, Folio:=TxtFolio.Text.ToEntero, FechaVenc:=txtFechaVenc.Text.ToDate, EstatusFianza:=DdlEstatusFianza.SelectedValue.ToEntero, CveContratoPlantilla:=DdlPlantillaContrato.SelectedValue.ToEntero,
CveCuentaEquipo:=DdlCuentaEquipo.SelectedValue.ToEntero, CveVendedor:=DdlVendedor.SelectedValue.ToEntero, Observaciones:=TxtObservaciones.Text, CveDireccionEnvio:=DdlClienteDireccionEnvio.SelectedValue.ToEntero, AplicaImpuestosLocales:=ChkImpuestosLocales.Checked,
CorreoNotificacionPedDev:=TxtCorreoNotificacion.Text.Trim()) Then
TieneError = Not GuardaFianzas(ObjContratos)
'Renombrar archivo
If Not TieneError Then
If UsuarioActual.Empresa.CvePlataforma = 3 AndAlso DdlTipoContrato.SelectedValue = "14" Then
Dim FechaIN As DateTime = TxtFechaInicial.Text.ToDateTime
Dim FechaFN As DateTime = TxtFechaFinal.Text.ToDateTime
Dim Periodo As Integer = DtPeriodo.FiltraParametros($"CvePeriodo = {DdlPeriodo.SelectedValue.ToEntero}").Rows(0)("Dias").ToString.ToEntero
Dim VigenciaEnDias As Double = DateDiff(DateInterval.Day, FechaI, FechaF)
Dim CiclosComerciales As Integer = Math.Round(VigenciaEnDias / Periodo).ToEntero
For Ciclo As Integer = 1 To CiclosComerciales
If Not ObjContratos.CicloComercialAdd(CveContrato, -1, DdlCliente.SelectedValue.ToEntero, False, -1, 1, UsuarioActual.CveEmpresa, FechaI.AddDays(Periodo * Ciclo)) Then TieneError = True : Exit For
Next
ElseIf CveTipoContrato = 25 Then
Dim FechaIN As DateTime = TxtFechaInicial.Text.ToDateTime
Dim FechaFN As DateTime = TxtFechaFinal.Text.ToDateTime
If FechaFN <> FechaF OrElse FechaI <> FechaIN Then
If Not ObjContratos.CicloComercialDelete(CveContrato, False, UsuarioActual.CveEmpresa) Then
TieneError = True
End If
If Not TieneError Then
If FechaIN >= DateTime.Today Then
If Not ObjContratos.CicloComercialAdd(CveContrato, -1, DdlCliente.SelectedValue.ToEntero, False, -1, 1, UsuarioActual.CveEmpresa, FechaIN) Then TieneError = True
End If
Dim Periodo As Integer = DtPeriodo.FiltroPrimeroValor("Meses", $"CvePeriodo = {DdlPeriodo.SelectedValue.ToEntero}").ToEntero
Dim VigenciaMeses As Double = DateDiff(DateInterval.Month, FechaI, FechaF)
Dim CiclosComerciales As Integer = Math.Ceiling(VigenciaMeses / Periodo).ToEntero
For Ciclo As Integer = 1 To CiclosComerciales
If Not ObjContratos.CicloComercialAdd(CveContrato, -1, DdlCliente.SelectedValue.ToEntero, False, -1, 1, UsuarioActual.CveEmpresa, If(FechaIN.AddMonths(Periodo * Ciclo) > FechaFN, FechaFN, FechaIN.AddMonths(Periodo * Ciclo))) Then TieneError = True : Exit For
Next
End If
End If
End If
If ViewState("extencion") IsNot Nothing Then
If ViewState("FUrl").ToString.Length > 0 AndAlso ViewState("extencion").ToString.Length > 0 Then
If Not Directory.Exists(ModExtensiones.DirectorioBaseEmpresas + "Empresas\" & UsuarioActual.CveEmpresa & "\Contratos") Then
Directory.CreateDirectory(ModExtensiones.DirectorioBaseEmpresas + "Empresas\" & UsuarioActual.CveEmpresa & "\Contratos")
End If
Ruta = ModExtensiones.DirectorioBaseEmpresas + "Empresas\" & UsuarioActual.CveEmpresa & "\Contratos\"
Try
If File.Exists(String.Format("{0}{1}.{2}", Ruta, CveContrato.ToString, ViewState("extencion").ToString)) Then
File.Delete(String.Format("{0}{1}.{2}", Ruta, CveContrato.ToString, ViewState("extencion").ToString))
End If
System.IO.File.Move(ViewState("FUrl").ToString, String.Format("{0}{1}.{2}", Ruta, CveContrato.ToString, ViewState("extencion").ToString))
Catch ex As Exception
End Try
' System.IO.File.Move(Archivo, String.Format("{0}{1}{2}", Ruta, CveContrato.ToString, Extension))
End If
End If
If ChkImpuestosLocales.Checked Then
Dim count As Integer = 0
ObjContratos.LimpiaImpuestosLocales(CveContrato)
For Each GVR As GridViewRow In GvImpuestosLocales.Rows
If GVR.FCCheckBox("ChkDeduccion").Checked Then
count = count + 1
ObjContratos.AddContratoImpuestosLocales(CveContrato, GVR.DataKey("CveImpuestoLocal").ToEntero)
End If
Next
If count = 0 Then
Alert("Debe seleccionar un Impuesto Local", TipoMensaje.MsgAdvertencia)
TieneError = True
End If
Else
ObjContratos.LimpiaImpuestosLocales(CveContrato)
End If
End If
Else
TieneError = True
End If
End If
If TieneError Then
ObjContratos.RollBack()
Else
ObjContratos.Commit()
If ObjContratos.GetContratos(-1, -1) Then
Application("GlobalDTContratos") = ObjContratos.DtResultados
End If
Limpiar()
If Modificado Then
Alert("El Contrato se modificó Correctamente.", TipoMensaje.MsgInformacion, String.Format("document.location.href=""/Contratos/Contrato.aspx?CveContrato={0}""", CveContrato))
@@ -1454,10 +1458,104 @@ Partial Class Contratos_Default
Alert("El Contrato se registró Correctamente.", TipoMensaje.MsgInformacion, String.Format("document.location.href=""/Contratos/Contrato.aspx?CveContrato={0}""", CveContrato))
End If
End If
UpGral.Update()
End If
ObjContratos.Dispose()
UpGral.Update()
RecargaGlobalContratos()
End Sub
Private Function GenerarCiclosComerciales(CveContrato As Integer, EsActualizacion As Boolean, ByRef ObjContratos As ClsContratos) As Boolean
Dim TieneError As Boolean = False
Dim FechaI As DateTime = TxtFechaInicial.Text.ToDateTime
Dim FechaF As DateTime = TxtFechaFinal.Text.ToDateTime
If EsActualizacion Then
Dim DtCiclos As DataTable = Nothing
If ObjContratos.CicloComercialGet(Me.CveContrato, -1, -1, UsuarioActual.CveEmpresa, MinFecha, MaxFecha) Then
Dim RowCiclo As DataRow = ObjContratos.DtResultados.FiltroPrimero("FueFacturado = 1", Orderby:="FechaVenc DESC")
If RowCiclo IsNot Nothing Then
FechaI = RowCiclo("FechaVenc").ToString().ToDateTime()
End If
Else
TieneError = True
End If
If Not ObjContratos.CicloComercialDelete(CveContrato, False, UsuarioActual.CveEmpresa) Then
TieneError = True
End If
End If
Dim PeriodoMeses As Integer = DtPeriodo.FiltroPrimeroValor("Meses", $"CvePeriodo = {DdlPeriodo.SelectedValue.ToEntero}").ToEntero
Dim PeriodoDias As Integer = DtPeriodo.FiltraParametros($"CvePeriodo = {DdlPeriodo.SelectedValue.ToEntero}").Rows(0)("Dias").ToString.ToEntero
If PeriodoMeses > 0 AndAlso PeriodoDias <= 0 Then
Dim VigenciaMeses As Double = DateDiff(DateInterval.Month, FechaI, FechaF)
Dim CiclosComercialesEnMeses As Integer = Math.Ceiling(VigenciaMeses / PeriodoMeses).ToEntero
For Ciclo As Integer = 1 To CiclosComercialesEnMeses
Dim FechaRef As DateTime = FechaI.AddMonths(PeriodoMeses * Ciclo)
Dim lastDayOfMonth = DateTime.DaysInMonth(FechaRef.Year, FechaRef.Month)
Dim DiaMes As Integer = If(FechaRef.Day < DdlDiaFact.SelectedValue.ToEntero(), lastDayOfMonth, DdlDiaFact.SelectedValue.ToEntero())
Dim FechaFact = New DateTime(FechaRef.Year, FechaRef.Month, DiaMes)
FechaFact = If(FechaFact > FechaF, FechaF, FechaFact)
If Not ObjContratos.CicloComercialAdd(CveContrato, -1, DdlCliente.SelectedValue.ToEntero, False, -1, 1, UsuarioActual.CveEmpresa, FechaFact) Then TieneError = True : Exit For
Next
End If
If PeriodoDias > 0 AndAlso PeriodoMeses <= 0 Then
Dim VigenciaEnMeses As Double = DateDiff(DateInterval.Month, FechaI, FechaF)
Dim CiclosComercialesEnDias As Integer = VigenciaEnMeses.ToEntero()
'RECORRE LOS MESES QUE VA A FACTURAR
For CicloMes As Integer = 1 To CiclosComercialesEnDias
Dim FechaRef As DateTime = FechaI.AddMonths(CicloMes)
Dim CiclosPorMesDecimal As Double = (FechaRef.LastDayOfMonth().Day.ToString().ToDouble() / PeriodoDias.ToString().ToDouble())
Dim CiclosPorMes As Integer = Math.Truncate(CiclosPorMesDecimal).ToEntero()
Dim DecimalPart As Double = CiclosPorMesDecimal - CiclosPorMes.ToString().ToDouble()
If DecimalPart > 0.7D Then
CiclosPorMes += 1
End If
Dim DiaAnterior As Integer = 0
For CicloDias = 1 To CiclosPorMes
Dim DiaMes As Integer = 0
If CicloDias = 1 Then
DiaMes = DdlDiaFact.SelectedValue.ToEntero()
Else
DiaMes = DiaAnterior + PeriodoDias
End If
Dim FechaFact As DateTime = New DateTime(FechaRef.Year, FechaRef.Month, If(DiaMes > FechaRef.LastDayOfMonth().Day, FechaRef.LastDayOfMonth().Day, DiaMes))
DiaAnterior = FechaFact.Day
If Not ObjContratos.CicloComercialAdd(CveContrato, -1, DdlCliente.SelectedValue.ToEntero, False, -1, 1, UsuarioActual.CveEmpresa, FechaFact) Then TieneError = True : Exit For
Next
Next
End If
Return Not TieneError
End Function
Private Sub RecargaGlobalContratos()
Using ObjContratos As New ClsContratos
If ObjContratos.GetContratos(-1, -1) Then
Application("GlobalDTContratos") = ObjContratos.DtResultados
End If
End Using
End Sub
#End Region
@@ -3468,13 +3566,54 @@ Partial Class Contratos_Default
End If
DdlPeriodo.DataSource = DtPeriodo
ObjContratos.Dispose()
DdlPeriodo.DataBind()
UpGral.Update()
End Sub
End Sub
Protected Sub DdlPeriodo_SelectedIndexChanged(sender As Object, e As EventArgs)
If DtPeriodo IsNot Nothing Then
If DdlPeriodo.SelectedValue.ToEntero() > 0 Then
Dim PeriodoDias As Integer = DtPeriodo.FiltraParametros($"CvePeriodo = {DdlPeriodo.SelectedValue.ToEntero}").Rows(0)("Dias").ToString.ToEntero
If PeriodoDias > 0 Then
CargaDiasMes(PeriodoDias)
Else
CargaDiasMes()
End If
Else
CargaDiasMes()
End If
Else
CargaDiasMes()
End If
End Sub
Private Sub CargaDiasMes(Optional NumMaxDias As Integer = 31)
DdlDiaFact.Items.Clear()
For i = 1 To NumMaxDias
DdlDiaFact.Items.Add(New ListItem(i.ToString(), i.ToString()))
Next
End Sub
Private Sub CargaCiclosComerciales()
If ChkAplicaFacCiclica.Checked Then
DivCiclosComerciales.Visible = True
Using ObjContratos As New ClsContratos
If ObjContratos.CicloComercialGet(Me.CveContrato, -1, -1, UsuarioActual.CveEmpresa, MinFecha, MaxFecha) Then
GvCiclosComerciales.DataSource = ObjContratos.DtResultados.FiltraParametros("", Orderby:="FechaVenc ASC")
End If
End Using
Else
DivCiclosComerciales.Visible = False
End If
GvCiclosComerciales.DataBind()
UpFacCiclica.Update()
End Sub
#End Region
#Region " IMPRESION "
#Region " IMPRIMIR AVANCE POR DOCUMENTO "
Protected Sub ImgImprimir_Click(sender As Object, e As EventArgs) Handles LBImprimir.Click
GenerarPDF()
@@ -4339,15 +4478,22 @@ Partial Class Contratos_Default
ObjContratos.Dispose()
GvImpuestosLocales.DataBind()
UpImpuestos.Update()
End Sub
End Sub
#End Region
Protected Sub ChkAplicaFacCiclica_CheckedChanged(sender As Object, e As EventArgs)
DivFacCiclica.Visible = ChkAplicaFacCiclica.Checked
DivCiclosComerciales.Visible = ChkAplicaFacCiclica.Checked
UpFacCiclica.Update()
End Sub
End Class