using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace VXmlCSharp
{
    class wrappers
    {
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_AddCfdiRelacionado_cfdi40W")]
        public static extern void VXML_AddCfdiRelacionado_cfdi40(IntPtr p, String UUID);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_AddCfdiRelacionados_cfdi40W")]
        public static extern void VXML_AddCfdiRelacionados_cfdi40(IntPtr p, String TipoRelacion, String UUID1, String UUID2, String UUID3, String UUID4, String UUID5, String UUID6, String UUID7, String UUID8, String UUID9, String UUID10);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_AddConcepto_cfdi40W")]
        public static extern void VXML_AddConcepto_cfdi40(IntPtr p, String ClaveProdServ, String NoIdentificacion, String Cantidad, String ClaveUnidad, String Unidad, String Descripcion, String ValorUnitario, String Importe, String Descuento, String ObjetoImp);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_AddConceptoTraslado_cfdi40W")]
        public static extern void VXML_AddConceptoTraslado_cfdi40(IntPtr p, String Base, String Impuesto, String Tipofactor, String TasaOCuota, String Importe);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_AddTraslado_cfdi40W")]
        public static extern void VXML_AddTraslado_cfdi40(IntPtr p, String Impuesto, String TipoFactor, String TasaOCuota, String Importe, String Base);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_CartaPorte31AddFiguraTransporteTiposFiguraW")]
        public static extern void VXML_CartaPorte31AddFiguraTransporteTiposFigura(IntPtr p, String TipoFigura, String RFCFigura, String NumLicencia, String NombreFigura, String NumRegIdTribFigura, String ResidenciaFiscalFigura, String ParteTransporte, String Calle, String NumeroExterior, String NumeroInterior, String Colonia, String Localidad, String Referencia, String Municipio, String Estado, String Pais, String CodigoPostal);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_CartaPorte31AddMercanciaW")]
        public static extern void VXML_CartaPorte31AddMercancia(IntPtr p, String BienesTransp, String ClaveSTCC, String Descripcion, String Cantidad, String ClaveUnidad, String Unidad, String Dimensiones, String MaterialPeligroso, String CveMaterialPeligroso, String Embalaje, String DescripEmbalaje, String SectorCOFEPRIS, String NombreIngredienteActivo, String NomQuimico, String DenominacionGenericaProd, String DenominacionDistintivaProd, String Fabricante, String FechaCaducidad, String LoteMedicamento, String FormaFarmaceutica, String CondicionesEspTransp, String RegistroSanitarioFolioAutorizacion, String PermisoImportacion, String FolioImpoVUCEM, String NumCAS, String RazonSocialEmpImp, String NumRegSanPlagCOFEPRIS, String DatosFabricante, String DatosFormulador, String DatosMaquilador, String UsoAutorizado, String PesoEnKg, String ValorMercancia, String Moneda, String FraccionArancelaria, String UUIDComercioExt, String TipoMateria, String DescripcionMateria);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_CartaPorte31AddMercanciaCantidadTransportaW")]
        public static extern void VXML_CartaPorte31AddMercanciaCantidadTransporta(IntPtr p, String Cantidad, String IDOrigen, String IDDestino, String CvesTransporte);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_CartaPorte31AddUbicacionW")]
        public static extern void VXML_CartaPorte31AddUbicacion(IntPtr p, String TipoUbicacion, String IDUbicacion, String RFCRemitenteDestinatario, String NombreRemitenteDestinatario, String NumRegIdTrib, String ResidenciaFiscal, String NumEstacion, String NombreEstacion, String NavegacionTrafico, String FechaHoraSalidaLlegada, String TipoEstacion, String DistanciaRecorrida, String Calle, String NumeroExterior, String NumeroInterior, String Colonia, String Localidad, String Referencia, String Municipio, String Estado, String Pais, String CodigoPostal);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_CartaPorte31SetMercanciasW")]
        public static extern void VXML_CartaPorte31SetMercancias(IntPtr p, String PesoBrutoTotal, String UnidadPeso, String PesoNetoTotal, String NumTotalMercancias, String CargoPorTasacion, String LogisticaInversaRecoleccionDevolucion);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_CartaPorte31SetMercanciasAutotransporteW")]
        public static extern void VXML_CartaPorte31SetMercanciasAutotransporte(IntPtr p, String PermSCT, String NumPermisoSCT, String ConfigVehicular, String PesoBrutoVehicular, String PlacaVM, String AnioModeloVM, String AseguraRespCivil, String PolizaRespCivil, String AseguraMedAmbiente, String PolizaMedAmbiente, String AseguraCarga, String PolizaCarga, String PrimaSeguro, String SubTipoRem1, String Placa1, String SubTipoRem2, String Placa2);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_FreeW")]
        public static extern void VXML_Free(IntPtr p);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_GetValueW")]
        public static extern IntPtr VXML_GetValue(IntPtr hXml, IntPtr value);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_GetValuesW")]
        public static extern void VXML_GetValues(IntPtr hXml, String file, IntPtr lFormat);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_NewW")]
        public static extern IntPtr VXML_New(String szVersion);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_NewWithLogW")]
        public static extern IntPtr VXML_NewWithLog(String szVersion, String cNombreLog);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_Nomina12AddDeduccionW")]
        public static extern void VXML_Nomina12AddDeduccion(IntPtr p, String TipoDeduccion, String Clave, String Concepto, String Importe);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_Nomina12AddOtroPagoW")]
        public static extern void VXML_Nomina12AddOtroPago(IntPtr p, String TipoOtroPago, String Clave, String Concepto, String Importe, String SubsidioCausado, String SaldoAFavor, String Year, String RemanenteSalFav);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_Nomina12AddPercepcionW")]
        public static extern void VXML_Nomina12AddPercepcion(IntPtr p, String TipoPercepcion, String Clave, String Concepto, String ImporteGravado, String ImporteExento, String Dias, String TipoHoras, String HorasExtra, String ImportePagado, String ValorMercado, String PrecioAlOtorgarse);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_Nomina12SetDeduccionesW")]
        public static extern void VXML_Nomina12SetDeducciones(IntPtr p, String TotalOtrasDeducciones, String TotalImpuestosRetenidos);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_Nomina12SetEmisorW")]
        public static extern void VXML_Nomina12SetEmisor(IntPtr p, String Curp, String RegistroPatronal, String RfcPatronOrigen, String OrigenRecurso, String MontoRecursoPropio);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_Nomina12SetPercepcionesW")]
        public static extern void VXML_Nomina12SetPercepciones(IntPtr p, String TotalSueldos, String TotalSeparacionIndeminizacion, String TotalJubilacionPensionRetiro, String TotalGravado, String TotalExento);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_Nomina12SetReceptorW")]
        public static extern void VXML_Nomina12SetReceptor(IntPtr p, String Curp, String NumSeguridadSocial, String FechaInicioRelLaboral, String Antiguedad, String TipoContrato, String Sindicalizado, String TipoJornada, String TipoRegimen, String NumEmpleado, String Departamento, String Puesto, String RiesgoPuesto, String PeriodicidadPago, String Banco, String CuentaBancaria, String SalarioBaseCotApor, String SalarioDiarioIntegrado, String ClaveEntFec);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_Pagos20AddPagoW")]
        public static extern void VXML_Pagos20AddPago(IntPtr p, String FechaPago, String FormaDePagoP, String MonedaP, String TipoCambioP, String Monto, String NumOperacion, String RfcEmisorCtaOrd, String NomBancoOrdExt, String CtaOrdenante, String RfcEmisorCtaBen, String CtaBeneficiario, String TipoCadPago, String CertPago, String CadPago, String SelloPago);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_Pagos20AddPagoDoctoRelacionadoW")]
        public static extern void VXML_Pagos20AddPagoDoctoRelacionado(IntPtr p, String idDocumento, String Serie, String Folio, String MonedadDR, String EquivalenciaDR, String NumParcialidad, String ImpSaldoAnt, String ImpPagado, String ImpSaldoInsoluto, String ObjetoImpDR);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_Pagos20AddPagoDoctoRelacionadoRetencionDRW")]
        public static extern void VXML_Pagos20AddPagoDoctoRelacionadoRetencionDR(IntPtr p, String BaseDR, String ImpuestoDR, String TipoFactorDR, String TasaOCuotaDR, String ImporteDR);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_Pagos20AddPagoDoctoRelacionadoTrasladoDRW")]
        public static extern void VXML_Pagos20AddPagoDoctoRelacionadoTrasladoDR(IntPtr p, String BaseDR, String ImpuestoDR, String TipoFactorDR, String TasaOCuotaDR, String ImporteDR);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_Pagos20AddPagoImpuestosPRetencionPW")]
        public static extern void VXML_Pagos20AddPagoImpuestosPRetencionP(IntPtr p, String ImpuestoP, String ImporteP);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_Pagos20AddPagoImpuestosPTrasladoPW")]
        public static extern void VXML_Pagos20AddPagoImpuestosPTrasladoP(IntPtr p, String BaseP, String ImpuestoP, String TipoFactorP, String TasaOCuotaP, String ImporteP);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_ProcesaDocumentoW")]
        public static extern IntPtr VXML_ProcesaDocumento(IntPtr hXml, String csd, String key, String keypwd, String outfile);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_SetCartaPorte31W")]
        public static extern void VXML_SetCartaPorte31(IntPtr p, String IdCCP, String TranspInternac, String EntradaSalidaMerc, String PaisOrigenDestino, String ViaEntradaSalida, String TotalDistRec, String RegistroITSMO, String UbicacionPoloOrigen, String UbicacionPoloDestino);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_SetComprobanteInfo_cfdi40W")]
        public static extern void VXML_SetComprobanteInfo_cfdi40(IntPtr p, String Serie, String Folio, String Fecha, String FormaDePago, String CondicionesDePago, String SubTotal, String Descuento, String Moneda, String TipoCambio, String Total, String TipoDeComprobante, String MetodoDePago, String LugarExpedicion, String Confirmacion, String Exportacion);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_SetEmisorInfo_cfdi40W")]
        public static extern void VXML_SetEmisorInfo_cfdi40(IntPtr p, String RFC, String Nombre, String RegimenFiscal, String FacAtrAdquirente);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_SetImpuestosInfo_cfdi40W")]
        public static extern void VXML_SetImpuestosInfo_cfdi40(IntPtr p, String totalImpuestosTrasladados, String totalImpuestosRetenidos);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_SetInformacionGlobal_cfdi40W")]
        public static extern void VXML_SetInformacionGlobal_cfdi40(IntPtr p, String Periodicidad, String Meses, String Year);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_SetLogFileW")]
        public static extern void VXML_SetLogFile(IntPtr p, String NombreLog);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_SetNomina12W")]
        public static extern void VXML_SetNomina12(IntPtr p, String TipoNomina, String FechaPago, String FechaInicialPago, String FechaFinalPago, String NumDiasPagados, String TotalPercepciones, String TotalDeduciones, String TotalOtrosPagos);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_SetPagos20W")]
        public static extern void VXML_SetPagos20(IntPtr p, String TotalRetencionesIVA, String TotalRetencionesISR, String TotalRetencionesIEPS, String TotalTrasladosBaseIVA16, String TotalTrasladosImpuestoIVA16, String TotalTrasladosBaseIVA8, String TotalTrasladosImpuestoIVA8, String TotalTrasladosBaseIVA0, String TotalTrasladosImpuestoIVA0, String TotalTrasladosBaseIVAExento, String MontoTotalPagos);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_SetReceptorInfo_cfdi40W")]
        public static extern void VXML_SetReceptorInfo_cfdi40(IntPtr p, String RFC, String Nombre, String ResidenciaFiscal, String NumRegIdTrib, String UsoCFDI, String DomicilioFiscalReceptor, String RegimenFiscalReceptor);
        [DllImport("VXML_x86.dll", CharSet = CharSet.Unicode, EntryPoint = "VXML_SetUserInfoW")]
        public static extern void VXML_SetUserInfo(IntPtr hXml, String szUser, String servidor);
    }
}
