Sei sulla pagina 1di 15

Api Servicios Cxc

Manual del programador

Descripcin general
Esta Api proporciona diferentes servicios para manipular la informacin del sistema de Cuentas
por cobrar Microsip.
Los servicios estn disponibles en la librera ApiMicrosip.dll
Estn disponibles las declaraciones de las funciones de esta dll para los siguientes lenguajes de
programacin:
Lenguaje Archivo
Delphi ApiMspCxcExt.Pas
Visual Basic ApiMspCxcExt.bas
.Net ApiMspDotNetExt.dll
using
ApiCC = ApisMicrosip.ApiMspCxcExt;

Convenciones
PChar
Representa un Null Terminated string, el cual es un string de caracteres terminado con el
caractr Ascii 0 (como se maneja en el lenguaje C).
Nota: cuando el parmetro sea de salida, es decir, cuando la funcin regresa un valor en l, es
responsabilidad de la aplicacin reservar espacio suficiente para el buffer donde se recibir el
dato.
Integer
Representa un entero de 4 bytes.
Double
Representa un valor real (punto flotante) de 8 bytes.
Texto multi-lneas
Se refiere a un PChar que puede contener saltos de lnea (caracteres 13 y 10).
Parmetros de salida
Existen parmetros en los que las funciones regresan datos; stos se debern pasar por
referencia, es decir, se debe pasar el apuntador a una variable del tipo adecuado. En este
documento, dichos parmetros se indican con la palabra Var antepuesta al nombre del
parmetro. Nota: a los parmetros de tipo Pchar no se les antepone la palabra Var debido a que
stos por su naturaleza siempre son apuntadores.
Parmetros de entrada tipo fecha
Existen funciones que reciben fechas como parmetros.
Estas fechas se deben pasar como PChar con el siguiente formato:
D/M/A
Donde D, M y A son el da, el mes, y el ao respectivamente en formato numrico.
El ao debe venir en 4 dgitos.
Ejemplos vlidos:
3/9/2003 (= 3 de septiembre del 2003)
15/05/2000 (= 15 de mayo del 2000)
Parmetros de entrada opcionales
Cuando un parmetro de una funcin se indique como opcional, significa que se acepta un
string vaco () si es tipo PChar, 0 si es numrico.

Api- Servicios Cxc - Pgina 1 de 15


Api Servicios Cxc
Manual del programador

Manejo de errores
La mayora de las funciones de la dll regresan un cdigo de error, 0 si no lo hubo.
Adems, la dll guarda la siguiente informacin del error de la ltima funcin ejecutada:
FLastErrorCode
0 = no hubo error
FLastErrorName
Nombre corto del error
FLastErrorFunctionName
Nombre de la funcin en la que ocurri el error
FLastErrorABErrorText: String
Si el error ocurri en la Api Bsica, esta variable guarda el texto del mensaje generado
por dicha Api.

Funciones para checar errores desde la aplicacin

ccGetLastErrorCode: Integer; stdcall;


Descripcin
Regresa el valor de FLastErrorCode.

ccGetLastErrorMessage (ErrorMessage: PChar): Integer; stdcall;


Descripcin
Forma un mensaje de error para el usuario, acerca del ltimo error ocurrido.
Parmetros
ErrorMessage. En este parmetro se regresa el texto del mensaje (no se altera la variable si no hubo
error).
Valor de retorno
Regresa el valor de FLastErrorCode.
Adems, si FLastErrorCode <> 0, asigna a ErrorMessage un texto con el siguiente formato:
Error #<FLastErrorCode> en funcin <FLastErrorFunctionName>
<FLastErrorName>

<FLastErrorABErrorText>
La ltima lnea y su espaciamiento se incluyen slo cuando el FLastErrorCode sea 99, es decir,
cuando ocurri una excepcin de Api bsica.
Nota: Se asume que la aplicacin slo va a mostrar el mensaje si esta funcin regresa un valor <> 0.

ccSetErrorHandling( ExceptionOnError, MessageOnException: Integer); stdcall


Descripcin
Establece la forma de manejar los errores de la dll en la aplicacin.
Parmetros
ExceptionOnError. 0 1. Si se asigna 1 a este parmetro, se levantar una excepcin de sistema
operativo cuando se detecte cualquier error en la dll, de lo contrario, slo se regresa el cdigo de
error en la funcin, y es responsabilidad de la aplicacin checarlo.
MessageOnException. 0 1. Slo tiene relevancia cuando se asigna 1 al primer parmetro. Si se
asigna 1 a este parmetro, se mostrar en una ventana el mensaje del error detectado, antes de
levantar la excepcin correspondiente.
Notas
La dll inicia con estos 2 parmetros en cero.

Api- Servicios Cxc - Pgina 2 de 15


Api Servicios Cxc
Manual del programador
Dado que esta Api utiliza a la Api bsica, y que sta ltima tiene su propio manejo de errores, se
recomienda que durante las llamadas a esta Api, en la bsica se mantengan en 0 ambos parmetros
para un mejor manejo de los errores.

Formas de manejar los errores en una aplicacin


Una forma de manejar los errores en el programa que usa esta dll es la siguiente:
Hacer un procedimiento que cheque por error y que reciba como parmetro un Bookmark
de tipo Integer el cual sirve para indicar el lugar o lnea de cdigo donde ocurri el error. La
lgica del procedimiento sera como sigue:
Si ccGetLastErrorMessage(ErrorMessage)<>0:
Mostrar al usuario un mensaje de error con el texto ErrorMessage concatenndole
un salto de lnea y el texto LUGAR ==> <Bookmark>
Terminar la ejecucin de la aplicacin (Stop).
Nota: declarar ErrorMessage como variable string global e inicializada a 255 caracteres
aproximadamente para dar cabida a cualquier mensaje de error.
Llamar a las funciones de la dll como si fueran procedimientos y no funciones (excepto en
las que el valor de retorno no sea un cdigo de error), y despus de cada llamada ejecutar el
procedimiento de chequeo de error pasando como parmetro un nmero de bookmark
diferente cada vez; este nmero nos ayuda a localizar exactamente la lnea de cdigo que
provoc el error.
Una forma alternativa de manejar los errores es indicarle a la dll que se desea que se levante
una excepcin de sistema operativo cuando se detecte un error, mostrando antes el mensaje de
error:
cmSetErrorHandling(1, 1)
De esta forma, no es necesario checar por error despus de cada funcin.
Si el lenguaje de programacin de la aplicacin que usa esta dll no tiene la capacidad de
atrapar excepciones del sistema operativo, es importante hacer MessageOnException = 1
(segundo parmetro) porque la aplicacin no terminar en forma normal debido a que se
obtendr un mensaje de error fatal por parte del sistema operativo (despus de mostrar el
mensaje de error de la dll).
En cambio, si el lenguaje s puede atrapar las excepciones, la aplicacin puede evitar el
mensaje de error fatal del sistema operativo.
Una desventaja de esta forma de manejar los errores es que no podemos identificar la lnea
exacta de cdigo que ocasion el error, pero al menos sabremos el nombre de la funcin.

Agregado de documentos
La forma de agregar documentos de Cuentas por cobrar a la base de datos de la empresa
consiste en llamar a las distintas funciones de esta Api en la secuencia apropiada. Ms adelante
se detallan las funciones. Ver tambin la seccin Pasos para registrar crditos al final de este
documento.
Se inicia un documento registrando su encabezado, es decir, sus datos generales. Este paso
inicia una nueva transaccin la cual permanece abierta hasta terminar de registrar el resto del
docuemento.
La transaccin se puede cancelar antes de finalizar el registro del documento, lo cual elimina
toda su informacin escrita hasta el momento.
Si se necesita se puede obtener el Id del documento que se est registrando.
Una vez registrado el encabezado del documento, se registra su detalle, es decir, los cargos
acreditados en el caso de crditos.

Api- Servicios Cxc - Pgina 3 de 15


Api Servicios Cxc
Manual del programador
Finalmente se indica la terminacin del documento, lo cual ocasiona que se afecten los saldos y
se hace permanente el documento haciendo Commit a la transaccin. Despus de esto se puede
iniciar el registro de otro documento.

Api- Servicios Cxc - Pgina 4 de 15


Api Servicios Cxc
Manual del programador

Funciones generales

SetDBCxc (DBHandle: Integer): Integer; stdcall;


Descripcin
Establece el componente de base de datos que las funciones de esta Api utilizarn para leer/escribir
datos.
Es responsabilidad de la aplicacin establecer la conexin a la base de datos (utilizando la funcin
DBConnect de la Api bsica) antes de llamar a las funciones de esta Api.
Parmetros
DBHandle. Nmero del objeto Database a utilizar.
Valor de retorno
0 = Todo correcto.
1 = Handle inexistente.
2 = Documento en proceso.
Notas
Este es el nico objeto de acceso a datos que se necesita proporcionar a esta Api, ya que todos los
dems transacciones, datasets, etc. son creados internamente.

AbortaDoctoCxc; stdcall;
Descripcin
Cancela lo afectado hasta el momento durante la alta de un documento de Cxc.
Si no hay un documento de Cxc en proceso, no se hace nada.
Cualquier error es ignorado.
Notas
Este mtodo hace RollBack a la transaccin interna que se utiliza para escribir documentos de Cxc.
En caso de cualquier error durante las llamadas a las funciones de alta de documentos, se ejecuta
automticamente este mtodo.

GetVersionApiCxcAsString(lVersion: PChar); stdcall;


Descripcin
Regresa la versin de esta librera, ApiCxc, como tipo PChar. El formato de la versin es X.Y.Z,
donde X es la versin mayor, Y es la versin menor, y Z es el nmero de revisin.
Se puede utilizar con propsito informativo en los programas que la usen.

GetVersionApiCxcAsInteger: Integer; stdcall;


Descripcin
Regresa la versin de esta librera, ApiCxc, como tipo entero. Por ejemplo, la versin PChar 7.2.5
equivale a la versin 7205 en entero, y la 7.2.15 a la 7215.

ChecaCompatibilidadCxc(HdbMetadatos: Integer): Integer; stdcall;


Descripcin
Checa la compatibilidad entre la base de datos de la empresa Microsip a accesar y esta Api.
Es muy importante que en cualquier programa que utilice esta Api, antes de leer o escribir
informacin se verifique que la versin de la Api sea compatible con la versin de la base de datos
de la empresa a accesar, para proteger la integridad de la informacin.
La base de datos de la empresa es la establecida mediante el mtodo SetDBCxc y debe estar
conectada.

Api- Servicios Cxc - Pgina 5 de 15


Api Servicios Cxc
Manual del programador
Se recomienda checar la compatibilidad justo despus de llamar al mtodo SetDBCxc, y slo
continuar si la hubo.
Parmetros
HdbMetadatos. Nmero del objeto de base de datos a utilizar para accesar el Metadatos Microsip, el
cual es la base de datos que contiene la informacin sobre las compatibilidades entre las diferentes
versiones. Debe ya estar conectado al Metadatos.fdb que le corresponde a la empresa a accesar, es
decir, el que se encuentra en la subcarpeta System de su carpeta de datos (por ejemplo: C:\Mirosip
datos\System\Metadatos.fdb).
Valor de retorno
0 = Existe compatibilidad.
1 = Base de datos de la empresa aun no establecida.
2 = Conexin a la base de datos de la empresa aun no establecida.
3 = Handle de la base de datos de Metadatos inexistente.
4 = Conexin a la base de datos de Metadatos aun no establecida.
5 = No se puede determinar la compatibilidad debido a que la base de datos de la empresa tiene una
conversin incompleta. En este caso se debe completar la conversin en el mdulo Administracin
del sistema.
6 = No existe compatibilidad, se debe actualizar la Api.
7 = No existe compatibilidad, se debe actualizar la base de datos de la empresa.
8 = No existe compatibilidad, la versin de esta Api no es reconocida por el servidor Microsip,
instale el nuevo Metadatos.
99 = Error de Api Bsica.

GetDoctoCCId(var DoctoId): Integer; stdcall;


Descripcin
Devuelve el Id que el API ha asignado al crdito que est en proceso. El Id es el identificador del
crdito en la base de datos de empresa Microsip.
Este mtodo debe ser llamado cuando haya un crdito en proceso, de lo contrario se generar un
error. Un crdito est en proceso desde que se invoca el mtodo NuevoCreditoCc hasta que se
invoca el mtodo AplicaCreditoCc.
Parmetros
DoctoId. En este parmetro se regresa el id del crdito que est en proceso.
Valor de retorno
0 = Operacin exitosa.
1 = No hay crdito en proceso.

GetImporteMonedaCliente(ClienteId: Integer; FormaCobroId: Integer;


ImporteCobro: Double; Fecha: PChar; var Importe: Double): Integer; stdcall;
Descripcin
Devuelve el importe del cobro calculado en la moneda del cliente en funcin al tipo de cambio
vigente a la fecha del cobro.
Este mtodo se puede llamar ya sea antes de crear un nuevo crdito o durante un crdito en proceso.
Es til cuando el programa captura un cobro en moneda local de un cliente de moneda extranjera,
para saber cul es el importe exacto que se debe aplicar a los cargos del cliente mediante llamadas
al mtodo RenglonCreditoCc.
Parmetros
ClienteId. Id del cliente al que se aplicar el cobro.
FormaCobroId. Es el id de la forma de cobro en la que se har el cobro.
ImporteCobro. Es el importe del cobro en la moneda de la forma de cobro.
Fecha. Es la fecha del cobro. Formato = D/M/A.

Api- Servicios Cxc - Pgina 6 de 15


Api Servicios Cxc
Manual del programador
Importe. En este parmetro se regresa el importe del cobro calculado en la moneda del cliente
redondeado a 2 decimales.

Valor de retorno
0 = Operacin exitosa.
1 = Cliente inexistente.
2 = Forma de cobro inexistente
3 = Slo se pueden indicar formas de cobro de la misma moneda del cliente o de la moneda local.
4 = El importe del cobro no ha sido indicado.
5 = Importe fuera del rango permitido.
6 = Fecha incorrecta.

Api- Servicios Cxc - Pgina 7 de 15


Api Servicios Cxc
Manual del programador

Funciones para Crditos

NuevoCreditoCc(ConceptoCcId: Integer; Fecha, Folio: PChar; ClienteId: Integer;


Descripcion: PChar; CobradorId: Integer; PLHandle: Integer ): Integer; stdcall;
Descripcin
Crea un nuevo encabezado de crdito en la base de datos.
Parmetros
ConceptoCcId. Id del concepto del crdito.
0 = asignar el Id del concepto Cobro.
Fecha. Fecha del crdito. Formato = D/M/A.
Folio.
Valores permitidos:
Un folio (manual)
Mximo 9 caracteres.
Serie opcional de 1 a 3 letras maysculas.
A la derecha de la serie debe venir la parte numrica del folio.
Ejemplos: A70, 4587, CR500.
(string vaco)
Se asigna el siguiente folio del concepto.
ClienteId. Id del cliente al que se aplicar el crdito.
Descripcion. Texto abierto para comentarios sobre el crdito. Puede ser texto multi-lnea. Es
opcional.
CobradorId. Id del cobrador que realiz el cobro.
0 = asignar el Id del cobrador asignado al cliente.
Nota: si el concepto del crdito no integra comisiones, este dato no importa.
PLHandle. Handle de una lista de parmetros.
En esta lista se recibe el resto de los parmetros que necesita esta funcin. Ver la seccin
Parmetros de la lista.
Si se pasa -1 en este parmetro, significa que no hay lista de parmetros y se tomar el
valor de default de cada uno de ellos.
Para construir y llenar una lista de parmetros se utilizar la Api bsica.
La lista es obligatoria si se va a registrar un Cobro por depositar.

PARMETROS DE LA LISTA.

Parmetro Descripcin
ES_COBRO_POR_DEPOSITAR Este parmetro indica si el documento que se va a
registrar se trata de un cobro por depositar o de un
crdito normal.
Valores: S o N.
Valor de default =N.
FORMA_COBRO_ID Indica la forma de cobro que se asignar al
documento.
0=sin forma de cobro.
Valor default = 0;
Slo se puede indicar la forma de cobro si el
concepto del crdito es de tipo Pago.

Api- Servicios Cxc - Pgina 8 de 15


Api Servicios Cxc
Manual del programador
La forma de cobro debe ser de la misma moneda del
cliente o de la moneda local.
REFERENCIA Indica la referencia de la forma de cobro, por
ejemplo el nmero del cheque recibido.
Valor default =.
Es obligatoria si la forma de cobro dada as lo indica.
NUM_CTA_PAGO ltimos 4 dgitos del nmero de cuenta con la que se
realiz el pago del documento.
Valor de default =
Es obligatorio si la forma de cobro dada as lo indica.
FECHA_APLICACION Es la fecha en la que se estima que un cobro por
depositar quedar depositado. Por ejemplo, en un
cheque posfechado esta es la fecha en la que el
cliente pidi que ste se deposite.
Valor default = .
Debe venir con el formato que se establece para el
manejo de fechas en las Apis Microsip NG.
(D/M/A).
Slo se usa si se trata de un cobro por depositar, en
cuyo caso es obligatoria y debe ser igual o posterior
a la fecha del crdito.
IMPORTE_COBRO Es el importe del cobro en la moneda de la forma de
cobro.
Debe venir con el formato: 9999999999999.99
Es obligatorio si la moneda de la forma de cobro es
diferente a la del cliente; en ese caso, este importe se
utiliza para calcular el importe en la moneda del
cliente que se abonar a los cargos, tomando para
ello el tipo de cambio vigente a la fecha del crdito.
La suma de los importes acreditados a los cargos
deber coincidir con este importe calculado. El
programador podr obtener dicho importe llamando
al mtodo GetImporteMonedaCliente.
El importe del cobro se puede proporcionar an
cuando las monedas sean iguales si se desea que, al
aplicar el crdito, se valide que la suma de los
importes acreditados a los cargos sea igual al importe
cobrado.
Valor de default = 0.0.
CUENTA_BAN_ID Es el Id de la cuenta bancaria que se debe asignar al
movimiento bancario de depsito que se genera a
partir del Cobro.
0 = Sin cuenta bancaria.
Valor de default = 0.
Es obligatorio si existe integracin de Cuentas por
cobrar con Bancos y el concepto del crdito es de
tipo Pago.
Este dato no se utiliza si se trata de un Cobro por
depositar.
La cuenta bancaria debe ser de la misma moneda de
la forma de cobro indicada.

Api- Servicios Cxc - Pgina 9 de 15


Api Servicios Cxc
Manual del programador
REFER_MOVTO_BA Es la referencia que se debe asignar al movimiento
bancario del depsito que se genera a partir del
Cobro.
Valores validos = Slo dgitos. (hasta 9 dgitos)
Valor de default =
Este dato no se utiliza si se trata de un Cobro por
depositar.

Valor de retorno
0 = Alta exitosa.
1 = Base de datos aun no establecida.
2 = Conexin a la base de datos aun no establecida.
3 = Documento en proceso.
4 = Concepto inexistente.
5 = El concepto no es un crdito.
6 = Fecha del crdito incorrecta.
7 = Formato de folio incorrecto.
8 = No se maneja consecutivo de folio en el concepto.
9 = Cliente inexistente.
10 = Cobrador inexistente.
11 = Crdito ya existe.
12 = Fecha del crdito es menor a la fecha de ltima eliminacin.
13 = Handle de la lista de parmetros inexistente.
14 = El concepto del cobro por depositar no es de tipo pago.
15 = Forma de cobro inexistente.
16 = Slo se pueden asignar formas de cobro de la misma moneda del cliente o de la moneda local.
17 = La referencia no ha sido indicada.
18 = Fecha de aplicacin incorrecta.
19 = No se permite elaborar documentos con folio manual en la modalidad de facturacin del
concepto.
20 = El Rfc de la empresa no ha sido indicado o est incorrecto.
21 = El domicilio de la empresa no ha sido indicado o est incompleto.
22 = El Rfc del cliente no ha sido indicado o est incorrecto.
23 = Error en el certificado de sellos digitales.
24 = El certificado de sellos digitales no est vigente a la fecha del documento.
25 = No existen folios fiscales disponibles para la serie del concepto dada.
26 = Slo se permite indicar la forma de cobro si el concepto del cobro es tipo pago.
27 = El nmero de cuenta bancaria no ha sido indicado.
28 = El nmero de cuenta bancaria est incorrecto. Indique los ltimos 4 dgitos.
29 = El importe del cobro no ha sido indicado.
30 = Formato del importe del cobro incorrecto.
31 = Importe del cobro fuera del rango permitido.
32 = La cuenta bancaria no ha sido indicada.
33 = Cuenta bancaria inexistente.
34 = La cuenta bancaria debe ser de la misma moneda de la forma de cobro.
35 = La referencia del depsito est incorrecta. Indique slo dgitos.
36 = La referencia del depsito est incorrecta. Indique mximo 9 dgitos.
37 = El concepto bancario no ha sido indicado.
98 = Alguno de los datos forneos del crdito est siendo modificado por otro usuario.
99 = Error de Api Bsica.

Api- Servicios Cxc - Pgina 10 de 15


Api Servicios Cxc
Manual del programador
Notas
Esta funcin inicia la creacin de un nuevo crdito en una nueva transaccin. Despus se deben
agregar los renglones o aplicaciones del crdito a los cargos pendientes del cliente
(RenglonCredito), y finalmente, aplicarlo (AplicaCredito). Tambin es posible abortar el nuevo
crdito en cualquier momento antes de aplicarlo (AbortaDoctoCxc).
Si el cliente del crdito es de moneda extranjera, se asigna al crdito el tipo de cambio vigente a la
fecha del mismo.

RenglonCreditoCc(TipoImporte: PChar;CargoId: Integer; FolioCargo: PChar;


Importe, Impuesto, IvaRetenido, IsrRetenido, DsctoPpag: Double): Integer; stdcall;
Descripcin
Crea un nuevo rengln para el crdito actual en la base de datos.
Es responsabilidad del programa registrar el desglose de impuestos mediante llamadas a la funcin
RenglonCreditoImpuestoCc.
Parmetros
TipoImporte.
R = Crdito
A = Saldo por acreditar.
Nota: el saldo por acreditar slo se acepta en los conceptos de crdito tipo Pago y
slo puede haber un rengln de estos en el crdito.
L = Liquidar por antigedad.
El importe dado se distribuye entre los cargos ms vencidos del cliente, y si hay
sobrante, ste se asigna al saldo por acreditar.
S = Liquidar el saldo de un cargo.
El importe ser automticamente el saldo pendiente del cargo dado.
En este tipo de liquidacin no se desglosan impuestos. Si se trata de un crdito por
devolucin en el que se requiere desglosar el impuesto a acreditar, se debe utilizar
el TipoImporte R y pasar los importes desglosados.
CargoId. Es el Id del cargo a acreditar. No se usa si el TipoImporte es A o L, pasar 0.
0 = determinarlo por folio.
FolioCargo. Es el folio del cargo a acreditar. Se usa slo cuando el CargoId es 0.
Importe. Es el importe a acreditar. No se usa si el TipoImporte es S.
Impuesto, IvaRetenido, IsrRetenido. Estos parmetros estn descontinuados.
Notas
El total de impuestos y retenciones a acreditar del cargo ser la suma de impuestos y
retenciones que se agreguen al desglose de impuestos del cargo por acreditar. (Ver
funcin RenglonCreditoImpuestoCc ms adelante)
Los parmetros se dejan para compatibilidad con el cdigo ya existente de los
desarrolladores, pero ya no tendrn efecto alguno.
DsctoPpag. Importe de descuento por pronto pago a acreditar. Se usa slo si el concepto del crdito
aplica descuento por pronto pago.
-1 = determinarlo automticamente.
Nota: cuando el TipoImporte es S o L, el DsctoPpag slo puede ser 0, para indicar que
no se aplique, 1 para indicar que se calcule automticamente.
Valor de retorno
0 = Alta exitosa.
1 = No hay crdito en proceso.
2 = Tipo de importe incorrecto.
3 = El concepto del crdito no acepta saldos por acreditar.
4 = Existe ms de un saldo por acreditar en el crdito.
5 = El tipo de importe L debe ser el nico rengln en el crdito.

Api- Servicios Cxc - Pgina 11 de 15


Api Servicios Cxc
Manual del programador
6 = No se especific el cargo a acreditar.
7 = Cargo no existe en los cargos por acreditar del cliente.
8 = Existen 2 o ms cargos del cliente con el folio dado.
9 = Se intent acreditar 2 veces al mismo cargo en el crdito.
10 = Importe fuera del rango permitido.
11 = No se especific el importe a acreditar.
12 = No se debe especificar importe al liquidar el saldo de un cargo.
24 = Descuento por pronto pago fuera del rango permitido.
25 = El descuento por pronto pago no procede para el concepto del crdito.
26 = No se debe indicar descuento por pronto pago al liquidar el saldo de un cargo.
27 = La fecha del crdito es anterior a la del cargo acreditado.
32 = No se permite indicar los tipos de importe A, L y S en un cobro fiscal.
33 = No se permite acreditar cargos que no son facturas en un cobro fiscal.
34 = Slo se permite acreditar a un solo cargo en un cobro fiscal.
35 = El cobro debe ser una parcialidad en un cobro fiscal.
36 = En un cobro fiscal, la venta de mostrador debe estar facturada al mismo cliente y dicha factura
incluir slo a esta venta.
37 = El cargo que est acreditando es un CFDI y an no est certificado.
38 = No fue posible obtener la informacin del cargo que est acreditando.
98 = Alguno de los datos forneos del crdito est siendo modificado por otro usuario.
99 = Error de Api Bsica.

RenglonCreditoImpuestoCc(ImpuestoId: Integer; Importe, Impuesto: Double):


Integer; stdcall;
Descripcin
Agrega un rengln de detalle al desglose de impuesto del cargo acreditado que acaba de registrarse mediante
la funcin RenglonCreditoCc.
Esta funcin se debe llamar por cada tipo de impuesto involucrado en el RenglonCreditoCc: Impuesto, Iva
retenido, Isr retenido. Esto se verifica al llamar a la funcin AplicaCreditoCc.
Es importante tomar en cuenta que, una vez llamada esta funcin por primera vez para el cargo acreditado
actual, se elimina el desglose de impuesto de default para todos los tipos de impuesto y se deber registrar
ste para todos ellos.
Parmetros
ImpuestoId. Es el Id del impuesto a agregar.
Importe. Es la base gravable sobre la que se aplica el impuesto.
Impuesto. Es el importe del impuesto.
-1 = Determinarlo automticamente tomando como base el Importe y el PctjeImpuesto.
Nota. Mediante este campo se indica el iva, la retencin de iva y la retencin de isr.
Valor de retorno
0 = Alta exitosa.
1 = No hay crdito en proceso.
2 = Impuesto no especificado.
3 = Impuesto inexistente.
4 = Importe fuera del rango permitido.
5 = Monto del impuesto fuera del rango permitido.
6 = El impuesto no procede para el concepto del crdito.
7 = El impuesto no procede para el cliente del crdito.
8 = El impuesto no procede para el concepto del cargo acreditado.
10 = El Iva retenido no procede para el concepto del crdito.
11 = El Iva retenido no procede para el cliente del crdito.
12 = El Iva retenido no procede para el concepto del cargo acreditado.

Api- Servicios Cxc - Pgina 12 de 15


Api Servicios Cxc
Manual del programador
14 = El Isr retenido no procede para el concepto del crdito.
15 = El Isr retenido no procede para el cliente del crdito.
16 = El Isr retenido no procede para el concepto del cargo acreditado.
18 = No es posible desglosar impuestos si el tipo de importe del rengln del crdito no es R.
19 = No se indic el importe total en un impuesto de tipo cuota por unidad.
20 = El impuesto no corresponde a los que tiene el cargo.
98 = Alguno de los datos forneos del crdito est siendo modificado por otro usuario.
99 = Error de Api Bsica.
Notas
Desglosa los impuestos del ltimo rengln registrado en el crdito.
nicamente se pueden desglosar impuestos si el tipo de importe especificado en RenglonCreditoCC
es R (Crdito), no se pueden desglosar impuestos si se registra un saldo por acreditar, se liquida el
saldo de un cargo o se liquidan por vencimiento.
Un impuesto solamente puede estar registrado una vez por cada cargo acreditado del crdito Cxc.

AplicaCreditoCc: Integer; stdcall;


Descripcin
Finaliza o hace definitivo el nuevo crdito recin registrado mediante las funciones NuevoCredito y
RenglonCredito. Adems, si la modalidad de facturacin de la factura es CFD o CFDI, se genera el
Comprobante fiscal digital correspondiente.
Valor de retorno
0 = Aplicacin exitosa.
1 = No hay crdito en proceso.
2 = No se han registrado renglones al crdito.
3 = El total acreditado excede al saldo por acreditar del cliente.
7 = No existen folios fiscales disponibles para la serie dada.
8 = Folio fiscal duplicado.
9 = Error al generar el comprobante fiscal digital.
10 = La suma de los importes acreditados a los cargos no coincide con el importe del cobro.
11 = Error al generar el movimiento bancario de depsito.
12 = El total a acreditar al cargo excede a su saldo.
98 = Alguno de los datos forneos del crdito est siendo modificado por otro usuario.
99 = Error de Api Bsica.
Notas
Al terminar de aplicar el crdito se hace Commit a la transaccin interna que se utiliza para escribir
documentos de Cxc.
En caso de error al generar el Comprobante fiscal digital (Valor de retorno = 9), el mensaje de error
contendr la informacin necesaria para conocer la causa de ste. Un caso tpico de error es que
falten datos obligatorios para el Comprobante fiscal digital y el mensaje de error indicar cul es el
dato con el problema.

Api- Servicios Cxc - Pgina 13 de 15


Api Servicios Cxc
Manual del programador

Pasos para registrar crditos


Los siguientes son los puntos importantes a tomar en cuenta al desarrollar un programa que agrega
crditos de cuentas por cobrar a la base de datos de empresa Microsip.
Establecer la forma de manejar los errores
En este caso optaremos por que NO se levanten excepciones cuando ocurran los errores,
sino que estaremos checando si hubo error despus de cada llamada a las funciones de la
Api.
ccSetErrorHandling(0,0)
Escribir un procedimiento para checar errores.
Este procedimiento ser llamado despus de cada llamada a cualquier funcin de la Api.
Procedure ApiError(BookMark: string);
Var ErrorMessage: array[0..255] of Char;
Begin
If cmGetLastErrorMessage(ErrorMessage)<>0 then
Begin
// Mostramos el mensaje de error al usuario
ShowMessage(ErrorMessage + #13 + Lugar ==> + BookMark);

// Desconectamos toda base de datos


DBDisconnect(-1);

// Terminamos la ejecucin de la aplicacin


Application.Terminate;
End;
End;

Establecer la conexin a la base de datos de la empresa.


Aqu depende del estilo de la aplicacin, pero lo normal es solicitar al usuario su clave y su
password y luego intentar hacer la conexin como sigue:
Al inicio del programa, crear los objetos necesarios:
DBEmpresa := NewDB;
trnEmpresa := NewTrn(DBEmpresa,3);
Hacer la conexin:
Error := DBConnect(DBEmpresa, DBFileName, Usuario, Password);
If Error <> 0 Then
Begin
// Si no fue error por mal usuario o password, terminar el programa
If Error <> 4 then ApiError(al conectar la empresa);

ShowMessage(El usuario o el password son incorrectos);


--- en este punto la aplicacin decide qu hacer, si terminar la ejecucin o volver
a preguntar usuario y password para un reintento. ---
End; // if Error <> 0
Nota: DBFileName es el nombre de la base de datos incluyendo ruta, por ejemplo,
C:\Microsip datos\Empresa.fdb.
Establecer la base de datos para la Api de Cuentas por cobrar.
SetDBCxc (DBEmpresa);
ApiError(1);
Establecer la conexin a la base de datos Metadatos para checar la compatibilidad.
Al inicio del programa, crear los objetos necesarios:

Api- Servicios Cxc - Pgina 14 de 15


Api Servicios Cxc
Manual del programador
DBMetadatos := NewDB;
trnMetadatos := NewTrn(DBMetadatos, 3);
Hacer la conexin:
DBConnect(DBMetadatos, MetadatosFileName, Usuario, Password);
ApiError(al conectar al Metadatos);
Nota: MetadatosFileName es el nombre de la base de datos Metadatos incluyendo
ruta, por ejemplo, C:\Microsip datos\System\Metadatos.fdb.
Checar la compatibildad entre esta Api y la base de datos de la empresa.
ChecaCompatibilidadCxc (DBMetadatos);
ApiError(1);
Desconectar el Metadatos (ya no lo necesitamos).
DBDisconnect(DBMetadatos);
ApiError(2);
Registro de crditos.
Los pasos anteriores son todos de inicializacin del programa; una vez completados con
xito, se pueden registrar crditos con los siguientes pasos.
Lista de parmetros.
La lista de parmetros se crea si se va a registrar un Cobro por depositar o un crdito con
forma de cobro.
if (ListaParametros = 0) then
ListaParametros:= NewPL;

// Asignar valor a los parmetros de la lista de parmetros.


PLSetParamValue (ListaParametros, ES_COBRO_POR_DEPOSITAR,S);
PLSetParamValue (ListaParametros, FORMA_COBRO_ID,123);
PLSetParamValue (ListaParametros, REFERENCIA,3456321),
PLSetParamValue (ListaParametros, FECHA_APLICACION,06/06/2010);
Iniciar el encabezado del crdito.
NuevoCreditoCc (, ListaParametros);
ApiError(100);
Agregar los renglones al crdito.
RenglonCreditoCc ();
ApiError(101);
RenglonCreditoImpuestoCc (); // Opcional
ApiError(102);
RenglonCreditoImpuestoCc (); // Opcional
ApiError(103);
Repetir esta secuencia por cada cargo a acreditar.
Aplicar el crdito.
Una vez registrados todos los renglones del crdito, ste se aplica para hacerlo definitivo y
afectar saldos, estadsticas, etc.
AplicaCreditoCc ();
ApiError(106);
Despus de esto se puede iniciar el registro de otro crdito.
Antes de cerrar el programa, desconectar toda base de datos.
Este cdigo debe ir en el evento que se lanza antes de cerrar la forma.
DBDisconnect (-1);
ApiError(107);

Api- Servicios Cxc - Pgina 15 de 15

Potrebbero piacerti anche