![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Hola ifarias, mi solucion es muy parecida a la tuya y me permito hacerte una recomendacion.
El Data Binding del cfdv2.xsl se genera muy bien pero aveces resulta que, por ejemplo, el cliente NO tiene "Numero Interior" o "Colonia" es por eso que en la unidad cfdv2.pas te recomiendo hacer una busqueda y remplazo de : Buscar : SetAttribute( Remplazar por : if Value <> '' then SetAttribute( entonces, por ejemplo, la rutina que graba el "Numero Exterior" quedaria asi :
Eso te garantiza que no se vayan a grabar datos nulos o vacios, algo que por cierto no le gusta al validador...... Hay dos valores tipo integer, noAprobacion y anoAprobacion (sic), esos tienes que usar
Tambien me permito mostrar como yo solucione los namespace extra, algo que no me deja muy convencido de tu solucion es que creas otro nodo, rompiendo un poco con el pragma del encapsulado que te da el data binding.
|
|
#2
|
|||
|
|||
|
En el mensaje anterior estaba tratando de introducir el siguiente codigo :
XMLDoc.XML.Text := '<?xml version="1.0" encoding="UTF-8" ?><Comprobante xmlns="http://www.sat.gob.mx/cfd/2"></Comprobante>'; XMLDoc.Active := True; CFD := GetComprobante(XMLDoc); with CFD do begin SetAttribute('xmlns:xsi','http://www.w3.org/2001/XMLSchema-instance'); SetAttribute('xsi:schemaLocation','http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd'); Version := '2.0'; Serie := ...........etc.................. Pero parece que el parser no lo interpreto bien........Saludos |
|
#3
|
|||
|
|||
|
dado
Gracias por los comentarios, los tomaré en cuenta. En cuanto a generar un Nodo adicional, la realidad es que me estoy posicionando en el nodo <Comprobante> que es el raíz en ese momento, (para mi desarrollo), y agrego atributos adicionales. Esto da como resultado el siguiente código XML Código:
<Comprobante xmlns="http://www.sat.gob.mx/cfd/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sat.gob.mx/cfd/2 http://www.sat.gob.mx/sitio_internet/cfd/2/cfdv2.xsd" version="2.0" serie= .... En cuanto al XML Data Binding, tienes toda la razón, es buena idea prevenir el que se generen datos nulos, y que fácil es que cometamos errores al codificar y tener problemas posteriores. |
|
#4
|
|||
|
|||
|
Facturación eléctronica
Hola compañeros foristas
Al igual que ustedes tengo el mismo problema, ya que he desarrollado un sistema de punto de venta y algunos programas para facturación (para comercializadoras, agentes aduanales, etc.), el caso es que parece muy complicado el asunto. Entre mis desarrollos he hecho un sistema de pedimentos (sirve para elaborar documentos para importar y exportar mercancias) desde hace varios años y antes de que se presente el pedimento ante la aduana, se debe validar, para lo cual genero un archivo y este hay que firmarlo electronicamente, para lo cual en las paginas de aduana se usa un programa llamado SIFEP o se puede optar por usar unas librerias para firmalos desde tu propio programa. No sé si esto sea similar a las facturas eléctronicas, el proceso en el sistema de pedimentos es el siguiente: Pedimentos - se captura el pedimento - se genera un archivo de texto con cos datos del pedimento, importador, mercancias, etc. - Se firmar el archivo utilizando el achivo de certificado .cer y el archivo llave .key que se le ha proporcionado al agente aduanal por el SAT - La cadena resultante (firma) se agrega al final del archivo de texto que se va a validar y se imprime en el pedimento Facturación - Se captura la factura - Se genera un archivo XML con los datos del vendedor, cliente, mercancias, etc. - Se firma el archivo - Se imprime en la factura (se hace algo mas?) Al final de todo esto no sé si sea lo mismo (se puedan firmar las facturas del mismo modo) aunque sospecho que aunque se parezca no tiene nada que ver. Por lo pronto voy a empezar por estudiar como generar el XML y todo el proceso.
__________________
Cancun, Q.Roo, México |
|
#5
|
||||
|
||||
|
Que tal cancun (jeje, que nicks tan originales
),Segun lo que comentas, el proceso es casi casi lo mismo. Adicionalmente a lo que tienes solo te restaría generar el xml y obtener su cadena de digestión y lo demás es pan comido pars ti según lo que tienes. ¿Que librerías son esas de las que dispones? Son gratis o de paga?
__________________
Tiempo y ocasión acontecen a todos! |
|
#6
|
|||
|
|||
|
Estan disponibles en la página:
http://www.aduanas.gob.mx/aduana_mex...144_10186.html Viene documentado el uso de la .dll, pero falta ver si es lo mismo, aunque al ser un formato de archivo diferente puede que no funcione. Si decides probarlo el código para usar la .dll es el siguiente: Código:
// hay que declarar al principio de tu unidad
type
PCURP = ^TCURP;
TCURP = record
curp: array[0..18] of char;
archivoKey: array[0..255] of char;
archivoCer: array[0..255] of char;
password: array[0..18] of char
end;
// Declaras las funciones
{$R *.DFM}
function BuscaCurpsG(const archivoOrig:pchar; const tipo:Integer; struct_curps_g:PCURP):Integer; stdcall;
external 'sgenc32.dll' name '_BuscaCurpsG_std@12';
function GeneraFirmaDigitalG(const archivoOrig:pchar; const tipo:Integer; struct_curps_g:PCURP):Integer; stdcall;
external 'sgenc32.dll' name '_GeneraFirmaDigitalG_std@12';
// Este es el boton que ejecuta la firma
procedure TFrmConfig.btnFirmarClick(Sender: TObject);
var
archivo: array [0..250] of Char;
PReg: PCURP;
Arch, Er:Integer;
begin
StrPCopy(archivo,FieldByName('Ruta').AsString+'\'+'m'+Patente+StrZero(Arch,3)+'.'+StrZero(DayOfTheYear(Date),3));
GetMem(PReg, SizeOf(TCURP) * 10);
Er:=BuscaCurpsG(archivo, 0, PReg);
StrPCopy(PReg.archivoKey,ArchivoKey);
StrPCopy(PReg.archivoCer,ArchivoCer);
StrPCopy(Preg.password,Clave);
Er:=GeneraFirmaDigitalG(archivo, 0, PReg);
if Er=0 then
Mensaje('Se ha firmado correctamente el archivo: '+archivo,'Firma exitosa',mb_Ok)
else
MensajeError('Error al procesar la Firma: '+IntToStr(Er),'Error');
end;
archivo ruta y nombre del archivo a firmar ArchivoKey Ruta y nombre del archivo con extensión .key ArchivoCer Ruta y nombre del archivo con extensión .cer Clave Password para la firma
__________________
Cancun, Q.Roo, México |
|
#7
|
|||
|
|||
|
Pues el asunto de cancun si se parece mucho a lo de la factura electronica.
Ahora, (ya estoy como en los concursos de television) cual es la pregunta? es decir, parece que tienes todo resuelto, tienes la dll, la forma de usarla dentro de Delphi y no parece muy dificil y lo mejor de todo, ya tienes un sistema de pedimentos desarrollado desde hace unos años..... En donde te atoraste? |
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Mexico - Como crear sellos en FACTURA ELECTRONICA.. | pcicom | API de Windows | 12 | 10-11-2012 18:46:55 |
| Factura Electrónica | aig | Varios | 13 | 10-12-2010 17:12:44 |
| factura electronica | cmm07 | Varios | 4 | 02-04-2009 17:46:03 |
| factura electronica | spia | Varios | 2 | 22-02-2009 21:30:06 |
| Factura electronica AUNA | Aprendiz | Varios | 5 | 01-09-2005 10:44:15 |
|