|
| 1 | +' |
| 2 | +' Ejemplo de Uso de Interfaz PyAfipWs para Windows Script Host |
| 3 | +' (Visual Basic / Visual Fox y lenguages con soporte ActiveX simil OCX) |
| 4 | +' con Web Service Autenticación / Remito Electrónico Harina AFIP |
| 5 | +' 2018(C) Mariano Reingart <reingart@gmail.com> |
| 6 | +' Licencia: GPLv3 |
| 7 | +' Requerimientos: scripts wsaa.py y wsfev1.py registrados (ver instaladores) |
| 8 | +' Documentacion: |
| 9 | +' http://www.sistemasagiles.com.ar/trac/wiki/RemitoElectronicoHarina |
| 10 | +' http://www.sistemasagiles.com.ar/trac/wiki/PyAfipWs |
| 11 | +' http://www.sistemasagiles.com.ar/trac/wiki/ManualPyAfipWs |
| 12 | + |
| 13 | +' Crear el objeto WSAA (Web Service de Autenticación y Autorización) AFIP |
| 14 | +Set WSAA = Wscript.CreateObject("WSAA") |
| 15 | +Wscript.Echo "InstallDir", WSAA.InstallDir, WSAA.Version |
| 16 | + |
| 17 | +' Solicitar Ticket de Acceso |
| 18 | +wsdl = "https://wsaahomo.afip.gov.ar/ws/services/LoginCms" ' Homologación! |
| 19 | +scriptdir = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName) |
| 20 | +proxy = "" ' en caso de ser necesario: "usuario:clave@servidor:puerto" |
| 21 | +wrapper = "" ' usar "pycurl" como transporte alternativo en caso de inconvenientes con SSL |
| 22 | +cacert = "" ' para verificacion de canal seguro usar: "conf\afip_ca_info.crt" |
| 23 | +cache = "C:\WINDOWS\TEMP" |
| 24 | +ok = WSAA.Autenticar("wsremharina", scriptdir & "\..\reingart.crt", scriptdir & "\..\reingart.key", wsdl, proxy, wrapper, cacert, cache) |
| 25 | +Wscript.Echo "Excepcion", WSAA.Excepcion |
| 26 | +Wscript.Echo "Token", WSAA.Token |
| 27 | +Wscript.Echo "Sign", WSAA.Sign |
| 28 | + |
| 29 | +' Crear el objeto WSRemHarina (Web Service de Remito Harinero) AFIP |
| 30 | + |
| 31 | +Set WSRemHarina = Wscript.CreateObject("WSRemHarina") |
| 32 | +Wscript.Echo "WSRemHarina Version", WSRemHarina.Version |
| 33 | + |
| 34 | +' Establecer parametros de uso: |
| 35 | +WSRemHarina.Cuit = "20267565393" |
| 36 | +WSRemHarina.Token = WSAA.Token |
| 37 | +WSRemHarina.Sign = WSAA.Sign |
| 38 | + |
| 39 | +' Conectar al websrvice |
| 40 | +wsdl = "https://fwshomo.afip.gov.ar/wsremharina/RemHarinaService?wsdl" |
| 41 | +timeout = 30 ' tiempo de espera predeterminado |
| 42 | +WSRemHarina.Conectar cache, wsdl, proxy, wrapper, cacert, timeout |
| 43 | + |
| 44 | +' Consultar último comprobante autorizado en AFIP |
| 45 | +tipo_comprobante = 993 |
| 46 | +punto_emision = 1 |
| 47 | +ult = 1 |
| 48 | + |
| 49 | +If ult = 0 Then |
| 50 | + ok = WSRemHarina.ConsultarUltimoRemitoEmitido(tipo_comprobante, punto_emision) |
| 51 | + |
| 52 | + If ok Then |
| 53 | + ult = WSRemHarina.NroRemito |
| 54 | + Else |
| 55 | + Wscript.Echo WSRemHarina.Traceback, "Traceback" |
| 56 | + Wscript.Echo WSRemHarina.XmlResponse, "XmlResponse" |
| 57 | + Wscript.Echo WSRemHarina.XmlRequest, "XmlRequest" |
| 58 | + ult = 0 |
| 59 | + End If |
| 60 | + Wscript.Echo ult, "Ultimo comprobante: " |
| 61 | + Wscript.Echo WSRemHarina.ErrMsg, "ErrMsg:" |
| 62 | + if WSRemHarina.Excepcion <> "" Then Wscript.Echo WSRemHarina.Excepcion, "Excepcion:" |
| 63 | +End If |
| 64 | + |
| 65 | +' Calculo el próximo número de comprobante: |
| 66 | +If ult = "" Then |
| 67 | + nro_remito = 0 ' no hay comprobantes emitidos |
| 68 | +Else |
| 69 | + nro_remito = CLng(ult) ' convertir a entero largo |
| 70 | +End If |
| 71 | +nro_remito = nro_remito + 1 |
| 72 | + |
| 73 | +' Establezco los valores del remito a autorizar: |
| 74 | +tipo_movimiento = "ENV" ' ENV: envio, RET: retiro, CAN: canje, RED: redestino |
| 75 | +cuit_titular = "20267565393" |
| 76 | +es_entrega_mostrador = "N" |
| 77 | +es_mercaderia_consignacion = "N" |
| 78 | +cuit_titular = "20267565393" |
| 79 | +importe_cot = "10000.0" |
| 80 | +tipo_emisor = "I" ' U: Usiario de molienda de trigo I: Industrial |
| 81 | +ruca_est_emisor = 1031 |
| 82 | +cod_rem_redestinar = Null |
| 83 | +cod_remito = Null |
| 84 | +estado = Null |
| 85 | +observaciones = Null |
| 86 | + |
| 87 | +ok = WSRemHarina.CrearRemito(tipo_comprobante, punto_emision, tipo_movimiento, _ |
| 88 | + cuit_titular, es_entrega_mostrador, es_mercaderia_consignacion, _ |
| 89 | + importe_cot, _ |
| 90 | + tipo_emisor, ruca_est_emisor, _ |
| 91 | + cod_rem_redestinar, _ |
| 92 | + cod_remito, estado, observaciones) |
| 93 | + |
| 94 | +cuit_pais_receptor = "55000002002" |
| 95 | +cuit_receptor = "20111111112" |
| 96 | +tipo_dom_receptor = 1 ' 1: fiscal, 3: comercial |
| 97 | +cod_dom_receptor = 1234 |
| 98 | +cuit_despachante = Null |
| 99 | +codigo_aduana = Null |
| 100 | +denominacion_receptor = Null |
| 101 | +domicilio_receptor = Null |
| 102 | + |
| 103 | +ok = WSRemHarina.AgregarReceptor(cuit_pais_receptor, _ |
| 104 | + cuit_receptor, tipo_dom_receptor, cod_dom_receptor, _ |
| 105 | + cuit_despachante, codigo_aduana, _ |
| 106 | + denominacion_receptor, domicilio_receptor): |
| 107 | + |
| 108 | +tipo_depositario = "E" ' I: Industrial de Molino/Trigo, E: Emisor D: Depositario |
| 109 | +cuit_depositario = "23000000019" |
| 110 | +ruca_est_depositario = 7297 |
| 111 | +tipo_dom_origen = 1 |
| 112 | +cod_dom_origen = 1 |
| 113 | + |
| 114 | +ok = WSRemHarina.AgregarDepositario(tipo_depositario, cuit_depositario, ruca_est_depositario, _ |
| 115 | + tipo_dom_origen=None, cod_dom_origen) |
| 116 | + |
| 117 | +' Agrego el viaje: |
| 118 | +fecha_inicio_viaje = "2018-10-01" |
| 119 | +distancia_km = 999 |
| 120 | +ok = WSRemHarina.AgregarViaje(fecha_inicio_viaje, distancia_km) |
| 121 | + |
| 122 | +cod_pais_transportista = 200 |
| 123 | +cuit_transportista = "20333333334" |
| 124 | +cuit_conductor = "20333333334" |
| 125 | +apellido_conductor = Null |
| 126 | +cedula_conductor = Null |
| 127 | +denom_transportista = Null |
| 128 | +id_impositivo = Null |
| 129 | +nombre_conductor = Null |
| 130 | + |
| 131 | +ok = WSRemHarina.AgregarTransportista(cod_pais_transportista, _ |
| 132 | + cuit_transportista, cuit_conductor, _ |
| 133 | + apellido_conductor, cedula_conductor, denom_transportista, _ |
| 134 | + id_impositivo, nombre_conductor) |
| 135 | + |
| 136 | +' Agregar vehiculo al viaje |
| 137 | +dominio_vehiculo = "AAA000" |
| 138 | +dominio_acoplado = "ZZZ000" |
| 139 | +ok = WSRemHarina.AgregarVehiculo(dominio_vehiculo, dominio_acoplado) |
| 140 | + |
| 141 | +' Agregar Mercaderia |
| 142 | +orden = 1 |
| 143 | +cod_tipo = 0 |
| 144 | +cod_tipo_emb = 0 |
| 145 | +cantidad_emb = 0 |
| 146 | +cod_tipo_unidad = 0 |
| 147 | +cant_unidad = 0 |
| 148 | +ok = WSRemHarina.AgregarMercaderia(orden, cod_tipo, cod_tipo_emb, cantidad_emb, cod_tipo_unidad, cant_unidad) |
| 149 | + |
| 150 | +' WSRemHarina.AgregarContingencias(tipo=1, observacion="anulacion") |
| 151 | + |
| 152 | +' Solicito CodRemito: |
| 153 | +id_req = Int(DateDiff("s","24-Sep-23 00:00:00", Now)) ' usar un numero interno único / clave primaria (id_remito) |
| 154 | +archivo = "qr.png" |
| 155 | +ok = WSRemHarina.GenerarRemito(id_req, archivo) |
| 156 | + |
| 157 | +If not ok Then |
| 158 | + ' Imprimo pedido y respuesta XML para depuración (errores de formato) |
| 159 | + Wscript.Echo "Traceback", WSRemHarina.Traceback |
| 160 | + Wscript.Echo "XmlResponse", WSRemHarina.XmlResponse |
| 161 | + Wscript.Echo "XmlRequest", WSRemHarina.XmlRequest |
| 162 | +End If |
| 163 | + |
| 164 | +Wscript.Echo "Resultado: ", WSRemHarina.Resultado |
| 165 | +Wscript.Echo "Cod Remito: ", WSRemHarina.CodRemito |
| 166 | +If WSRemHarina.CodAutorizacion Then |
| 167 | + Wscript.Echo "Numero Remito: ", WSRemHarina.NumeroRemito |
| 168 | + Wscript.Echo "Cod Autorizacion: ", WSRemHarina.CodAutorizacion |
| 169 | + Wscript.Echo "Fecha Emision", WSRemHarina.FechaEmision |
| 170 | + Wscript.Echo "Fecha Vencimiento", WSRemHarina.FechaVencimiento |
| 171 | +End If |
| 172 | +Wscript.Echo "Estado: ", WSRemHarina.Estado |
| 173 | +Wscript.Echo "Observaciones: ", WSRemHarina.Obs |
| 174 | +Wscript.Echo "Errores:", WSRemHarina.ErrMsg |
| 175 | +Wscript.Echo "Evento:", WSRemHarina.Evento |
| 176 | + |
| 177 | +MsgBox "Resultado:" & WSRemHarina.Resultado & " CodRemito: " & WSRemHarina.CodRemito, vbInformation + vbOKOnly |
0 commit comments