Foros del Web » Programación para mayores de 30 ;) » .NET »

codigo de cfdi para cancelacion facturas

Estas en el tema de codigo de cfdi para cancelacion facturas en el foro de .NET en Foros del Web. Hola a todos Me podrian ayudar no se que esta mal en el codigo ya que me manda una ventana de: indice fuera de los ...
  #1 (permalink)  
Antiguo 05/07/2011, 17:21
 
Fecha de Ingreso: agosto-2010
Ubicación: mexico
Mensajes: 125
Antigüedad: 13 años, 7 meses
Puntos: 0
Pregunta codigo de cfdi para cancelacion facturas

Hola a todos

Me podrian ayudar no se que esta mal en el codigo ya que me manda una ventana de: indice fuera de los limites de matriz, y no se por que..utilizo el case para mandar llamar la funcion en la cual me manda la ventana de error lo que esta parte s = ms.cancelaFactura(sSerieFolio(0), sSerieFolio(1)) de la funcion cancelar factura.

Código PHP:
Select Case t(0)("letra")
           
            Case 
"CA"

                
cancelaFactura(t(0)("letra"), "PASTELERIA""CONTRPUNTA"cEmpresanNumero)

            Case 
"CB"

                
cancelaFactura(t(0)("letra"), "MISCELANEOS""CONTRPUNTA"cEmpresanNumero)

            Case 
"CC"

                
cancelaFactura(t(0)("letra"), "CAFEENGRANO""CONTRPUNTA"cEmpresanNumero)

        
End Select 
Código PHP:
Public Sub cancelaFactura(ByVal letra As StringByVal usuario As StringByVal sucursal As StringByVal cEmpresa As StringByVal nNumero As Integer)
        
Dim cUsuario As String
        Dim cSucursal 
As String
        Dim cLetra 
As String

        Dim ms 
As MySuite.MySuiteCFD
        Dim m_con 
As New SqlConnection
        Dim m_com 
As SqlCommand

        cUsuario 
usuario
        cSucursal 
sucursal
        cLetra 
letra

        cLetra 
cLetra.Substring(0)
        
cLetra cLetra.Replace(".XML""")

        
Dim sSerieFolio() = cLetra.Split("-")

        If 
sSerieFolio.Length 1 Then
            
'Exit Sub
        End If

        Dim s As String

        ms = New MySuite.MySuiteCFD("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "xxxxx", "xxxxxxxxxxxxx", cUsuario, cSucursal)
       s = ms.cancelaFactura(sSerieFolio(0), sSerieFolio(1))
        m_con = New SqlConnection
        m_con.ConnectionString = Me.conn.ConnectionString
        m_con.Open()

        m_com = m_con.CreateCommand()
        m_com.CommandText = "UPDATE c_albven SET libre_2 = @mensaje WHERE empresa = '" & cEmpresa & "' AND numero = " & nNumero & " AND letra = '" & cLetra & ""
        m_com.Parameters.AddWithValue("
mensaje", s)

        m_com.ExecuteNonQuery()
        m_con.Close()

    End Sub 

Última edición por acse; 05/07/2011 a las 17:29
  #2 (permalink)  
Antiguo 05/07/2011, 17:35
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: codigo de cfdi para cancelacion facturas

verifica el split, posiblemente no existan los objetos 0 y 1 dentro del array
  #3 (permalink)  
Antiguo 05/07/2011, 17:38
 
Fecha de Ingreso: agosto-2010
Ubicación: mexico
Mensajes: 125
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: codigo de cfdi para cancelacion facturas

Perdon pero como podria verifiacr eso la verdad es qeu no tengo mucha experiencia en la programacion.

Por otro lado si modifico esta linea cLetra = cLetra.Substring(0) y le pongo cLetra = cLetra.Substring(3) Me manda este mensaje startIndex no puede ser mayor que la longitud de la cadena. Nombre del parámetro: startIndex

Y si lo cambio por cLetra = cLetra.Substring(0, 3) me manda esto otro El índice y la longitud deben hacer referencia a una ubicación en la cadena. Nombre del parámetro: length

Última edición por acse; 05/07/2011 a las 17:43
  #4 (permalink)  
Antiguo 05/07/2011, 17:45
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: codigo de cfdi para cancelacion facturas

Verifica si el string contiene el "-" si lo tiene que lo parta, si lo parte, verifica que los valores no sean vacios,
Código vb:
Ver original
  1. dim contiene as boolean
  2. contiene = cletra.contains("-")
  3. if contiene = true then
  4. Dim sSerieFolio() = cLetra.Split("-")
  5. if not string.isnullorempty(sSerieFolio(0)) andalso not string.isnullorempty(sSerieFolio(1))
  6.  s = ms.cancelaFactura(sSerieFolio(0), sSerieFolio(1))
  7. end if
  8. end if

adecualo a tu codigo

Última edición por HaverRamirez; 05/07/2011 a las 17:46 Razón: falto hacer el split
  #5 (permalink)  
Antiguo 05/07/2011, 18:00
 
Fecha de Ingreso: agosto-2010
Ubicación: mexico
Mensajes: 125
Antigüedad: 13 años, 7 meses
Puntos: 0
Pregunta Respuesta: codigo de cfdi para cancelacion facturas

Lo agrege al codigo de esta forma no se si lo hice bien

Código PHP:
 Public Sub cancelaFactura(ByVal letra As StringByVal usuario As StringByVal sucursal As StringByVal cEmpresa As StringByVal nNumero As Integer)
        
Dim cUsuario As String
        Dim cSucursal 
As String
        Dim cLetra 
As String

        Dim ms 
As MySuite.MySuiteCFD
        Dim m_con 
As New SqlConnection
        Dim m_com 
As SqlCommand

        cUsuario 
usuario
        cSucursal 
sucursal
        cLetra 
letra

        cLetra 
cLetra.Substring(0)
        
cLetra cLetra.Replace(".XML""")

        
' Dim sSerieFolio() = cLetra.Split("-")

        ' 
If sSerieFolio.Length 1 Then
        
'Exit Sub
        ' 
End If

        
Dim s As String


        Dim contiene 
As Boolean
        contiene 
cLetra.Contains("-")
        If 
contiene True Then
            Dim sSerieFolio
() = cLetra.Split("-")
            If 
Not String.IsNullOrEmpty(sSerieFolio(0)) AndAlso Not String.IsNullOrEmpty(sSerieFolio(1)) Then

                ms 
= New MySuite.MySuiteCFD("f7941c77-eb0a-4427-bec8-8e625e9cf27b""MX""CMP101004CV6"cUsuariocSucursal)

                
ms.cancelaFactura(sSerieFolio(0), sSerieFolio(1))




                
' s = ms.cancelaFactura(sSerieFolio(0), sSerieFolio(1))

                m_con = New SqlConnection
                m_con.ConnectionString = Me.conn.ConnectionString
                m_con.Open()

                m_com = m_con.CreateCommand()
                m_com.CommandText = "UPDATE c_albven SET libre_2 = @mensaje WHERE empresa = '" & cEmpresa & "' AND numero = " & nNumero & " AND letra = '" & cLetra & ""
                m_com.Parameters.AddWithValue("
mensaje", s)

                m_com.ExecuteNonQuery()
                m_con.Close()
            End If
        End If
    End Sub 
  #6 (permalink)  
Antiguo 05/07/2011, 18:04
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: codigo de cfdi para cancelacion facturas

y te funciona?
  #7 (permalink)  
Antiguo 05/07/2011, 18:11
 
Fecha de Ingreso: agosto-2010
Ubicación: mexico
Mensajes: 125
Antigüedad: 13 años, 7 meses
Puntos: 0
Pregunta Respuesta: codigo de cfdi para cancelacion facturas

Pues no hace nada, Y tampoco me manda mensaje de nada. y ni poniendo los break point.

Código PHP:
Dim contiene As Boolean 
        contiene 
cLetra.Contains("-"
        If 
contiene True Then 
            Dim sSerieFolio
() = cLetra.Split("-"
            If 
Not String.IsNullOrEmpty(sSerieFolio(0)) AndAlso Not String.IsNullOrEmpty(sSerieFolio(1)) Then 

                ms 
= New MySuite.MySuiteCFD("f7941c77-eb0a-4427-bec8-8e625e9cf27b""MX""CMP101004CV6"cUsuariocSucursal

                
ms.cancelaFactura(sSerieFolio(0), sSerieFolio(1)) 
  #8 (permalink)  
Antiguo 05/07/2011, 18:14
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: codigo de cfdi para cancelacion facturas

pues ponle un messageBox("ALGO") para saber por donde va en tal caso, pero si ya no dio error me suena a que el split no lleva el "-"
  #9 (permalink)  
Antiguo 06/07/2011, 09:14
 
Fecha de Ingreso: agosto-2010
Ubicación: mexico
Mensajes: 125
Antigüedad: 13 años, 7 meses
Puntos: 0
Pregunta Respuesta: codigo de cfdi para cancelacion facturas

Hola al poner los break point detengo pauso ´para ver que es lo que contien el dim de contine y me dice que es falso y al llegar al if me dice que es falso y empieza hacer un ciclo en esa parte.

Ahoras bien dentro de esta parte
Código PHP:
 s ms.cancelaFactura(sSerieFolio(0), sSerieFolio(1)) 
se manda llamar a una funcion a lojada en una clase.

la cual es esta
Código PHP:
Public Function cancelaFactura(ByVal Serie As StringByVal Folio As Long) As String
        Dim msws 
As New MySuiteWS.FactWSFront

        Dim transactionTAg 
msws.RequestTransaction(m_Requestor_
                                                     
"CANCEL_XML"m_CodigoDelPaism_EntityRFC_
                                                     m_Requestor
_
                                                     Me
.m_CodigoDelPais Me.m_EntityRFC Me.m_UserName_
                                                     Serie
_
                                                     Folio
.ToString(), "")

        If 
transactionTAg.Response.Result True Then
            
Return "Ok." transactionTAg.Response.Identifier.Batch " " transactionTAg.Response.Identifier.Serial
        
Else
            Return 
transactionTAg.Response.Hint " " transactionTAg.Response.Data
        End 
If

    
End Function


    Public Function 
obtenerDocumento(ByVal Serie As String_
                                     ByVal Folio 
As Long_
                                     ByVal ArchivoPDF 
As String_
                                     ByVal ArchivoXML 
As String) As String

        Dim transactionTAg 
msws.RequestTransaction(m_Requestor_
                                                     
"GET_DOCUMENT"m_CodigoDelPaism_EntityRFC_
                                                     m_Requestor
_
                                                     Me
.m_CodigoDelPais Me.m_EntityRFC Me.m_UserNameSerie_
                                                     Folio
.ToString(), "XML PDF")

        
Dim sMensaje As String

        
If transactionTAg.Response.Result True Then

            sMensaje 
Me.salvaArchivo(transactionTAg.ResponseData.ResponseData3ArchivoPDF)

            If 
sMensaje <> "Ok." Then
                
Return sMensaje
            End 
If

            
sMensaje Me.salvaArchivo(transactionTAg.ResponseData.ResponseData1ArchivoXML)

            If 
sMensaje <> "Ok." Then
                
Return sMensaje
            End 
If

            Return 
"Ok." transactionTAg.Response.Identifier.Batch " " transactionTAg.Response.Identifier.Serial

        
Else
            Return 
transactionTAg.Response.Hint " " transactionTAg.Response.Data
        End 
If

    
End Function 

Última edición por acse; 06/07/2011 a las 09:43
  #10 (permalink)  
Antiguo 06/07/2011, 10:13
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: codigo de cfdi para cancelacion facturas

No entiendo, tu sabes que hace tu aplicación?. en si me parece que era solo validar que el split devolviera dos valores...
  #11 (permalink)  
Antiguo 06/07/2011, 10:18
 
Fecha de Ingreso: agosto-2010
Ubicación: mexico
Mensajes: 125
Antigüedad: 13 años, 7 meses
Puntos: 0
Pregunta Respuesta: codigo de cfdi para cancelacion facturas

Hola, lapliacion es para la facturacion electronica, ahora bien es verdad que mi problema es el split pero agrege la parte de la clase para un mayor vision de como fuciona lo de la cancelacion electronica.

Regresando al tema del split, no me muestra ningun mensaje pero si llega a esa parte en la que me ayudaste a del dim y el if

Etiquetas: cfdi, facturas, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:30.