Refacturacion de facturas canceladas, cancelacion de refacturada desde el reporte. correccion de poliza en empresa UsaAC
This commit is contained in:
@@ -68,9 +68,9 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas
|
||||
}
|
||||
|
||||
ObjVentas.Dispose();
|
||||
GvDatos.DataSource = DtVentas.FiltraParametros("(CveEstatusFactura = 20 AND CveEstatusRefacturacion = 0)");
|
||||
GvDatos.DataSource = DtVentas.FiltraParametros("(CveEstatusFactura = 20 AND CveEstatusRefacturacion IN (0,4))");
|
||||
|
||||
var DtRefacturar = DtVentas.FiltraParametros("CveEstatusRefacturacion IN (1,3) OR (CveEstatusFactura = 20 AND CveEstatusRefacturacion > 0) OR CveEstatusFactura = 23");
|
||||
var DtRefacturar = DtVentas.FiltraParametros("CveEstatusRefacturacion IN (1,3) OR (CveEstatusFactura = 20 AND CveEstatusRefacturacion IN (1,2,3)) OR CveEstatusFactura = 23");
|
||||
if (DtRefacturar != null && DtRefacturar.Rows.Count > 0)
|
||||
{
|
||||
DivRefacturar.Visible = true;
|
||||
@@ -177,9 +177,25 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas
|
||||
string Nombre = GvRow.DataKey("Nombre");
|
||||
string FolioSustitucion = GvRow.DataKey("FolioFiscalSustitucion");
|
||||
|
||||
int CveMotivoCancelacion = -1;
|
||||
int CveEstatusRefacturacion = GvRow.DataKey("CveEstatusRefacturacion").ToEntero();
|
||||
|
||||
//SI NO SE PUDO CANCELAR, CANCELAR CON EL 02
|
||||
if (CveEstatusRefacturacion == 4)
|
||||
{
|
||||
FolioSustitucion = "";
|
||||
//CUANDO LAS REFACTURACIONES NO SE PUEDEN CANCELAR, DEBE SER CANCELADO CON EL MOTIVO 02
|
||||
CveMotivoCancelacion = get_GlobalDTMotivosCancelacionEmpresa(UsuarioActual.CveEmpresa, CveSATMotivoCancelacion: 2).FiltroPrimeroValor("CveMotivoCancelacion").ToEntero();
|
||||
}
|
||||
else
|
||||
{
|
||||
CveEstatusRefacturacion = 2;
|
||||
}
|
||||
|
||||
|
||||
if (CveVenta > 0 && Uuid != "")
|
||||
{
|
||||
var respCancelacion = CancelarDocumento(CveVenta, -1, CveCliente, Folio, Uuid, "", DateTime.Now, TipoDocto, Total.ToDouble(), UsuarioActual.Empresa.CvePAC, EsRefacturacion: true, FolioSustitucion: FolioSustitucion, CveEstatusRefacturacion: 2);
|
||||
var respCancelacion = CancelarDocumento(CveVenta, -1, CveCliente, Folio, Uuid, "", DateTime.Now, TipoDocto, Total.ToDouble(), UsuarioActual.Empresa.CvePAC, EsRefacturacion: true, FolioSustitucion: FolioSustitucion, CveEstatusRefacturacion: CveEstatusRefacturacion);
|
||||
|
||||
if (!respCancelacion.HuboError)
|
||||
{
|
||||
@@ -463,7 +479,7 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas
|
||||
retorno.Mensaje = sb.ToString();
|
||||
return retorno;
|
||||
}
|
||||
private Modelos.Factura.MCancelacionVentaMensaje CancelarDocumento(int CveVenta, int CveEstatus, int CveCliente, string Folio, string FolioFiscal, string CancelacionAcuse, DateTime CancelacionFecha, string TipoComprobante, double Total, int CvePACCancelacion, bool EsRefacturacion = false, string FolioSustitucion = "", int CveEstatusRefacturacion = 0)
|
||||
private Modelos.Factura.MCancelacionVentaMensaje CancelarDocumento(int CveVenta, int CveEstatus, int CveCliente, string Folio, string FolioFiscal, string CancelacionAcuse, DateTime CancelacionFecha, string TipoComprobante, double Total, int CvePACCancelacion, bool EsRefacturacion = false, string FolioSustitucion = "", int CveEstatusRefacturacion = 0, int CveMotivoCancelacion = 0)
|
||||
{
|
||||
Modelos.Factura.MCancelacionVentaMensaje retorno = null;
|
||||
var factura = new Modelos.Factura(UsuarioActual, CveVenta, UsuarioActual.CveEmpresa, EsCancelacion: true);
|
||||
@@ -480,12 +496,22 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas
|
||||
factura.CveEstatusRefacturacion = CveEstatusRefacturacion;
|
||||
}
|
||||
|
||||
if (CveMotivoCancelacion > 0)
|
||||
{
|
||||
factura.CveMotivoCancelacion = CveMotivoCancelacion;
|
||||
}
|
||||
|
||||
int CveEstatusFactura = -1;
|
||||
//SI LA FACTURA YA ESTA CANCELADA, LA ASIGNA YA COMO CANCELADA
|
||||
if (CveEstatus == 5)
|
||||
{
|
||||
CveEstatusFactura = CveEstatus;
|
||||
}
|
||||
//NO DEBE DE ASIGNAR ESTATUS
|
||||
if (CveEstatus == -2)
|
||||
{
|
||||
CveEstatusFactura = -1;
|
||||
}
|
||||
|
||||
retorno = factura.CancelarPorRefacturacion(factura.CveMotivoCancelacion, factura.MotivoCancelacion, FolioSustitucion: FolioSustitucion, CveEstatusFacturaAsignado: CveEstatusFactura);
|
||||
}
|
||||
@@ -561,6 +587,11 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas
|
||||
if (e.Row.DBCampo("PuedeRefacturar").ToString().ToEntero() == 0 && e.Row.DBCampo("CveEstatusFactura").ToString().ToEntero() == 23 && e.Row.DBCampo("CveVentaSustitucion").ToEntero() > 0)
|
||||
{
|
||||
e.Row.FCLinkButton("LnkCancelar").Visible = true;
|
||||
//SOLO MOSTRAR SI LA FACTURA NUEVA ESTA EMITIDA
|
||||
if (e.Row.DBCampo("CveEstatusRefacturacion").ToString().ToEntero() != 4 && e.Row.DBCampo("CveEstatusFacturaSustitucion").ToString().ToEntero() == 3)
|
||||
{
|
||||
e.Row.FCLinkButton("LnkCancelarFolioSustitucion").Visible = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -708,40 +739,127 @@ public partial class Ventas_RepCancelacionesPorRespuesta : ClsPaginas
|
||||
|
||||
}
|
||||
|
||||
protected void LnkCancelarFolioSustitucion_Click(object sender, EventArgs e)
|
||||
{
|
||||
//this.HdnLigaRefacturar.Value = "";
|
||||
this.CveVenta = -1;
|
||||
|
||||
//protected void BtnAcuse_Click(object sender, EventArgs e)
|
||||
//{
|
||||
// GridViewRow GvRow = (GridViewRow)(((LinkButton)sender).NamingContainer);
|
||||
// string UsuarioServicio = "rene.molina@adsistemas.mx";
|
||||
// string ClaveServicio = "rene2018";
|
||||
// string UrlServicio = "https://cfdi.gofac.com.mx/timbrado.asmx?WSDL";
|
||||
GridViewRow GvRow = (GridViewRow)(((LinkButton)sender).NamingContainer);
|
||||
this.CveVenta = GvRow.DataKey("CveVentaSustitucion").ToEntero();
|
||||
|
||||
// this.CveVenta = GvRow.DataKey("CveVenta").ToEntero();
|
||||
int CveCliente = GvRow.DataKey("CveClienteSustitucion").ToEntero();
|
||||
string Total = GvRow.DataKey("TotalSustitucion");
|
||||
string RFCReceptor = GvRow.DataKey("RFCReceptorSustitucion");
|
||||
string TipoDocto = GvRow.DataKey("TipoDocto");
|
||||
string Nombre = GvRow.DataKey("Nombre");
|
||||
string FolioSustitucion = GvRow.DataKey("FolioFiscalSustitucion");
|
||||
string SerieFolioSustitucion = GvRow.DataKey("SerieFolioSustitucion");
|
||||
|
||||
// string Uuid = GvRow.DataKey("FolioFiscal");
|
||||
// decimal Total = GvRow.DataKey("Total").ToDecimal();
|
||||
// string RFCCliente = GvRow.DataKey("RFCCliente");
|
||||
// string FolioFiscalSustitucion = GvRow.DataKey("FolioFiscalSustitucion");
|
||||
// Cancelacion2022.AcuseSat resp = new Cancelacion2022.AcuseSat();
|
||||
// GoFac.GoCfdi a = new GoFac.GoCfdi();
|
||||
// a.ObtenerAcuse(UrlServicio, UsuarioActual.Empresa.RFC, UsuarioServicio, ClaveServicio, Uuid);
|
||||
int CveVentaOriginal = GvRow.DataKey("CveVenta").ToEntero();
|
||||
string SerieFolioOriginal = GvRow.DataKey("SerieFolio");
|
||||
|
||||
// if (a.CodigoError != 0)
|
||||
// {
|
||||
// //no se pudo obtener, la mandamos cancelar
|
||||
// Timbrado ObjCancelacion = new Timbrado();
|
||||
//CUANDO LAS REFACTURACIONES NO SE PUEDEN CANCELAR, DEBE SER CANCELADO CON EL MOTIVO 02
|
||||
int CveMotivoCancelacion = get_GlobalDTMotivosCancelacionEmpresa(UsuarioActual.CveEmpresa, CveSATMotivoCancelacion: 2).FiltroPrimeroValor("CveMotivoCancelacion").ToEntero();
|
||||
|
||||
// if (ObjCancelacion.CFDICancelar(UsuarioActual.Empresa, Uuid, Total, RFCCliente, UsuarioActual.Empresa.RFC, 4, ValidaFactura:false, CveSATMotivoCancelacion: 1, FolioSustitucion: FolioFiscalSustitucion ))
|
||||
// {
|
||||
// string b = ObjCancelacion.CancelacionAcuse;
|
||||
// //falta actualizar
|
||||
// Alert("Se regeneró la solicitud de cancelación");
|
||||
// }
|
||||
if (CveVenta > 0 && FolioSustitucion != "")
|
||||
{
|
||||
var respCancelacion = CancelarDocumento(CveVenta, -2, CveCliente, "", FolioSustitucion, "", DateTime.Now, TipoDocto, Total.ToDouble(), UsuarioActual.Empresa.CvePAC, EsRefacturacion: true, FolioSustitucion: "", CveEstatusRefacturacion: 4, CveMotivoCancelacion: CveMotivoCancelacion);
|
||||
|
||||
if (!respCancelacion.HuboError)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
var EnviarAcuse = false;
|
||||
if (respCancelacion.CveEstatus > 0)
|
||||
{
|
||||
if (respCancelacion.CveEstatus.Contiene(5, 20))
|
||||
{
|
||||
EnviarAcuse = true;
|
||||
}
|
||||
|
||||
// }
|
||||
var CveEstatus = respCancelacion.CveEstatus;
|
||||
var ObjVentas = new ClsVentas();
|
||||
if (ObjVentas.UpdateEstatusVenta(CveVenta, CveEstatus, UsuarioActual.CveEmpresa))
|
||||
{
|
||||
if (respCancelacion.CveEstatus == 20)
|
||||
{
|
||||
sb.Append($"El estatus de la factura <b>{SerieFolioSustitucion}</b> fue cambiado a 'Cancelación en proceso'.");
|
||||
sb.Append("El documento se canceló correctamente.");
|
||||
sb.Append($"</br> <a href='/Compras/PopUpVerFactura.aspx?P={Encripta($"OP=CAN&CVEVTA={CveVenta}")}' class='Texto' target='_blank'>Imprimir Acuse</a>");
|
||||
}
|
||||
else if (respCancelacion.CveEstatus == 23)
|
||||
{
|
||||
sb.Append("La solicitud de cancelación no la aplicó el SAT, intente cancelar de nuevo.");
|
||||
}
|
||||
else if (respCancelacion.CveEstatus == 5)
|
||||
{
|
||||
sb.Append($"El estatus de la factura <b>{SerieFolioSustitucion}</b> fue cambiado a 'Cancelada'.");
|
||||
sb.Append("El documento se canceló correctamente.");
|
||||
sb.Append($"</br> <a href='/Compras/PopUpVerFactura.aspx?P={Encripta($"OP=CAN&CVEVTA={CveVenta}")}' class='Texto' target='_blank'>Imprimir Acuse</a>");
|
||||
}
|
||||
|
||||
//}
|
||||
if (respCancelacion.CveEstatus.Contiene(5,20))
|
||||
{
|
||||
if (ObjVentas.UpdateEstatusVenta(CveVentaOriginal, 23, UsuarioActual.CveEmpresa, CveEstatusRefacturacion:4, CveMotivoCancelacion: CveMotivoCancelacion))
|
||||
{
|
||||
sb.Append($"</br>La Factura <b>{SerieFolioOriginal}</b> fue desligada.");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.Append("Ocurrió un error al cambiar el estatus de la factura.");
|
||||
}
|
||||
ObjVentas.Dispose();
|
||||
|
||||
if (respCancelacion.CveEstatus == 23)
|
||||
{
|
||||
var resp = Timbrado.VerificarVigenciaSAT(FolioSustitucion, UsuarioActual.Empresa.RFC, RFCReceptor, Total, true);
|
||||
if (resp != null)
|
||||
{
|
||||
sb.AppendFormat("<br/> Folio Fiscal: {0} <br/>", FolioSustitucion);
|
||||
sb.AppendFormat("Código Estado: {0} <br/>", resp.CodigoEstatus);
|
||||
sb.AppendFormat("Estado: {0} <br/>", resp.Estado);
|
||||
sb.AppendFormat("Es Cancelable: {0} <br/>", string.IsNullOrEmpty(resp.EsCancelable) ? "Desconocido" : resp.EsCancelable);
|
||||
sb.AppendFormat("Estatus de Cancelación: {0} <br/><br/>", string.IsNullOrEmpty(resp.EsCancelable) ? "Desconocido" : resp.EstatusCancelacion);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var resp = Timbrado.VerificarVigenciaSAT(FolioSustitucion, UsuarioActual.Empresa.RFC, RFCReceptor, Total, true);
|
||||
if (resp != null)
|
||||
{
|
||||
sb.AppendFormat("Folio Fiscal: {0} <br/>", FolioSustitucion);
|
||||
sb.AppendFormat("Código Estado: {0} <br/>", resp.CodigoEstatus);
|
||||
sb.AppendFormat("Estado: {0} <br/>", resp.Estado);
|
||||
sb.AppendFormat("Es Cancelable: {0} <br/>", string.IsNullOrEmpty(resp.EsCancelable) ? "Desconocido" : resp.EsCancelable);
|
||||
sb.AppendFormat("Estatus de Cancelación: {0} <br/><br/>", string.IsNullOrEmpty(resp.EsCancelable) ? "Desconocido" : resp.EstatusCancelacion);
|
||||
}
|
||||
|
||||
sb.Append(respCancelacion.Mensaje);
|
||||
}
|
||||
|
||||
if (EnviarAcuse)
|
||||
{
|
||||
sb.Append("</br></br> ¿Desea enviar el Acuse de Cancelación al Cliente?");
|
||||
Alert(sb.ToString(), TipoMensaje.MsgConfirmacion, "BtnEnviarMailCancelacion();", TextoConfirmacion: "Enviar", TextoSegundoBoton: "Cancelar");
|
||||
}
|
||||
else
|
||||
{
|
||||
Alert(sb.ToString());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Alert(respCancelacion.Mensaje, TipoMensaje.MsgError);
|
||||
}
|
||||
|
||||
CargaDatos();
|
||||
}
|
||||
UPDatos.Update();
|
||||
|
||||
}
|
||||
}
|
||||
public class MRespuestaSAT
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user