Página 1 de 2
Factura Electronica y Pedimentos
Publicado: Mar Sep 07, 2010 10:13 pm
por masrmty
Compre el software por mercado libre y me ha ayudado enormemente, Pregunto: Alguien que tenga el codigo que hay que agregar para poner pedimentos aduanales.
Saludos y gracias.
Re: Factura Electronica y Pedimentos
Publicado: Mié Sep 08, 2010 12:12 pm
por Dado
Bueno, la opcion estaba ahi desde siempre, solo que no la habia declarado, pero puedes usar :
Código: Seleccionar todo
with Conceptos.Add do
begin
Cantidad := Paso2Form.Cantidad1.Text;
{opc} Unidad := Paso2Form.Unidad1.Text;
{opc NoIdentificacion := '';}
Descripcion := Paso2Form.Descr1.Text;
ValorUnitario := FloatToStrF(StrToFloatDef(Paso2Form.PU1.Text,0),ffFixed,10,2);
Importe := FloatToStrF(StrToFloatDef(Paso2Form.PT1.Text,0),ffFixed,10,2);
with InformacionAduanera.Add do
begin
Numero := '';
fecha := '';
aduana := '';
end;
end; {with CFD.Concepto}
Re: Factura Electronica y Pedimentos
Publicado: Mié Oct 06, 2010 8:02 pm
por juan
Hola, DADO.
De cualquiera de las dos formas que estan comentadas obtengo un error. Esta es la seccion para generar la cadena original. ¿Que estoy haciendo mal? Gracias.
with CFDCopy.Conceptos do
begin
for n := 0 to ChildNodes.Count - 1 do
if ChildNodes[n].NodeType = ntElement then
begin
AgregaDato(Concepto[n].Cantidad);
AgregaDato(Concepto[n].Unidad);
AgregaDato(Concepto[n].NoIdentificacion);
AgregaDato(Concepto[n].Descripcion);
AgregaDato(Concepto[n].valorunitario);
AgregaDato(Concepto[n].Importe);
{
with Concepto[n].InformacionAduanera do
begin
AgregaDato(Items[n].Numero);
AgregaDato(Items[n].fecha);
AgregaDato(Items[n].Aduana);
end;
}
end;
{
with Concepto[n].InformacionAduanera do
begin
AgregaDato(Items[n].Numero);
AgregaDato(Items[n].fecha);
AgregaDato(Items[n].Aduana);
end;
}
Re: Factura Electronica y Pedimentos
Publicado: Mié Oct 06, 2010 11:06 pm
por Dado
La parte de codigo para agregar la informacion aduanera a la Cadena Original es :
Código: Seleccionar todo
with Conceptos do
for n := 0 to ChildNodes.Count-1 do
if ChildNodes[n].NodeType = ntElement then
begin
AgregaDato(Concepto[n].Cantidad); AgregaDato(Concepto[n].Unidad); AgregaDato(Concepto[n].NoIdentificacion);
AgregaDato(Concepto[n].Descripcion); AgregaDato(Concepto[n].ValorUnitario); AgregaDato(Concepto[n].Importe);
for n1 := 0 to Concepto[n].ChildNodes.Count-1 do
begin
if Concepto[n].ChildNodes[n1].NodeName = 'InformacionAduanera' then
begin
AgregaDato(Concepto[n].InformacionAduanera[n1].Numero);
AgregaDato(Concepto[n].InformacionAduanera[n1].Fecha);
AgregaDato(Concepto[n].InformacionAduanera[n1].Aduana);
end;
if Concepto[n].ChildNodes[n1].NodeName = 'CuentaPredial' then
begin
AgregaDato(Concepto[n].CuentaPredial.Numero);
end;
end;
end; {with CFD.Conceptos}
Re: Factura Electronica y Pedimentos
Publicado: Jue Oct 07, 2010 11:57 am
por juan
Gracias.
Re: Factura Electronica y Pedimentos
Publicado: Mié Oct 13, 2010 2:54 pm
por juan
Hola, disculpa tanta pregunta, pero tengo otra duda ojala me puedas ayudar por favor.
Tengo este codigo para generar el XML la seccion de conceptos, y necesito agregar la informcion aduanera por cada concepto, tengo una consulta separada para los conceptos de articulos y otra consulta para la informacion aduanera de cada concepto. El problema es que de esta forma
Código: Seleccionar todo
while not dmDatos.qryConceptos.Eof do
begin
with CFD.Conceptos.Add do
begin
Cantidad := Trim(dmDatos.qryConceptos.FieldByName('cantidad')
.AsString);
Descripcion := Trim(dmDatos.qryConceptos.FieldByName('descripcion')
.AsString);
valorunitario := FormatFloat('#######0.00',
dmDatos.qryConceptos.FieldByName('precio').AsFloat);
Importe := FormatFloat('#######0.00',
(dmDatos.qryConceptos.FieldByName('precio').AsFloat) *
(dmDatos.qryConceptos.FieldByName('cantidad').AsFloat));
while not dmDatos.qryAuxiliar2.Eof do
begin
with InformacionAduanera.Add do
begin
NUmero := Trim(dmDatos.qryAuxiliar2.FieldByName('numeropedimento')
.AsString);
Aduana := 'COMILA'; // Trim(dmDatos.qryAuxiliar2.FieldByName('aduana').AsString);
fecha := FormatDateTime('YYYY-MM-DD',
dmDatos.qryAuxiliar2.FieldByName('fecha').AsDateTime);
// dmDatos.qryConceptos.Next;
// dmDatos.qryAuxiliar2.Next;
end;
dmDatos.qryAuxiliar2.Next;
end;
dmDatos.qryConceptos.Next;
end;
De esta forma si hay solo un articulo genera bien el XMl, pero si hay 2 o mas, agrega toda la informacion aduanera al primer articulo, no he podido resolver el problema.
CON O MAS ARTICULOS CON PEDIMENTO:
Código: Seleccionar todo
<Conceptos>
-
<Concepto cantidad="1" descripcion="Poliman" valorUnitario="9.00" importe="9.00">
<InformacionAduanera numero="FFD" aduana="COMILA" fecha="2010-10-13"/>
<InformacionAduanera numero="PEDIMENTO YYTT 87" aduana="COMILA" fecha="2010-10-31"/>
</Concepto>
<Concepto cantidad="1" descripcion="ARTICULO CON PEDIMENTO" valorUnitario="350.00" importe="350.00"/>
</Conceptos>
CON UN ARTICULO CON PEDIMENTO:
Código: Seleccionar todo
<Conceptos>
-
<Concepto cantidad="1" descripcion="Poliman" valorUnitario="9.00" importe="9.00">
<InformacionAduanera numero="FFD" aduana="COMILA" fecha="2010-10-13"/>
</Concepto>
</Conceptos>
Re: Factura Electronica y Pedimentos
Publicado: Mié Oct 13, 2010 3:21 pm
por Dado
Lo que esta mal es que te estas "echando" toda tu subconsulta y no la estas reseteando.
Necesitas algo como lo siguiente checa esto:
Código: Seleccionar todo
while not dmDatos.qryConceptos.Eof do
begin
with CFD.Conceptos.Add do
begin
Cantidad := Trim(dmDatos.qryConceptos.FieldByName('cantidad')
.AsString);
Descripcion := Trim(dmDatos.qryConceptos.FieldByName('descripcion')
.AsString);
valorunitario := FormatFloat('#######0.00',
dmDatos.qryConceptos.FieldByName('precio').AsFloat);
Importe := FormatFloat('#######0.00',
(dmDatos.qryConceptos.FieldByName('precio').AsFloat) *
(dmDatos.qryConceptos.FieldByName('cantidad').AsFloat));
dmDatos.qryAuxiliar2.GOTOP (o gofirst o skip -1, o lo que sea necesario); <<<<<<<<<<<<<<<<<<<<<<< CHECA SI ESTO TE SIRVE
dmDatos.qryAuxiliar2.Execute; <<<<<<<<<<<<<<<<<<<<<<< CHECA SI ESTO TE SIRVE, con una re-ejecucion te aseguras que se tomen los datos nuevamente
<<<<<<<<<<Tambien tienes que poner un filtro a tu query para que solo tome los datos aduaneros del concepto que le corresponde
<<<<<<<<<<algo asi como SELECT (datos aduaneros) from xxxx where concepto = Descripccion
while not dmDatos.qryAuxiliar2.Eof do
begin
with InformacionAduanera.Add do
begin
NUmero := Trim(dmDatos.qryAuxiliar2.FieldByName('numeropedimento')
.AsString);
Aduana := 'COMILA'; // Trim(dmDatos.qryAuxiliar2.FieldByName('aduana').AsString);
fecha := FormatDateTime('YYYY-MM-DD',
dmDatos.qryAuxiliar2.FieldByName('fecha').AsDateTime);
// dmDatos.qryConceptos.Next;
// dmDatos.qryAuxiliar2.Next;
end;
dmDatos.qryAuxiliar2.Next;
end;
dmDatos.qryConceptos.Next;
end;
Me interesa lo que me dices de tomar los datos del certificado sin necesidad de openssl o dll, mandamelo a mi email, te lo agradeceria.
Re: Factura Electronica y Pedimentos
Publicado: Mié Oct 13, 2010 3:29 pm
por Dado
Estaba pensando, tambien puedes quitar el bucle de la aduana, te digo que el problema es que te estas "acabando" todos los valores de la aduana en un solo concepto, quedaria entonces asi:
Código: Seleccionar todo
while not dmDatos.qryConceptos.Eof do
begin
with CFD.Conceptos.Add do
begin
Cantidad := Trim(dmDatos.qryConceptos.FieldByName('cantidad')
.AsString);
Descripcion := Trim(dmDatos.qryConceptos.FieldByName('descripcion')
.AsString);
valorunitario := FormatFloat('#######0.00',
dmDatos.qryConceptos.FieldByName('precio').AsFloat);
Importe := FormatFloat('#######0.00',
(dmDatos.qryConceptos.FieldByName('precio').AsFloat) *
(dmDatos.qryConceptos.FieldByName('cantidad').AsFloat));
// while not dmDatos.qryAuxiliar2.Eof do <<<<<<<<<<no poner este bucle
begin
with InformacionAduanera.Add do
begin
NUmero := Trim(dmDatos.qryAuxiliar2.FieldByName('numeropedimento')
.AsString);
Aduana := 'COMILA'; // Trim(dmDatos.qryAuxiliar2.FieldByName('aduana').AsString);
fecha := FormatDateTime('YYYY-MM-DD',
dmDatos.qryAuxiliar2.FieldByName('fecha').AsDateTime);
// dmDatos.qryConceptos.Next;
// dmDatos.qryAuxiliar2.Next;
end;
dmDatos.qryAuxiliar2.Next;
end;
dmDatos.qryConceptos.Next;
end;
Re: Factura Electronica y Pedimentos
Publicado: Lun Mar 28, 2011 9:56 am
por davidrf88
Tengo una duda Por que el validador del sat me manda este error
Error: cvc-complex-type.2.4.a: Invalid content was found starting with element 'cfdi:Parte'. One of '{"
http://www.sat.gob.mx/cfd/3":InformacionAduanera}' is expected.
este es mi nodo de comceptos
<cfdi:Conceptos>
<cfdi:Concepto unidad="PIEZA" noIdentificacion="0003" descripcion="IPAD 4" valorUnitario="15000" cantidad="1" importe="15000">
<cfdi:InformacionAduanera numero="23" fecha="2011-03-28" aduana="ADUANA MANTE" />
<cfdi:Parte cantidad="1" unidad="PIEZA" descripcion="HD FRONT CAM" valorUnitario="5000" importe="5000">
<cfdi:InformacionAduanera numero="2345" fecha="2011-03-28" aduana="ADUANA MATAMOROS" />
<cfdi:InformacionAduanera numero="23" fecha="2011-03-28" aduana="ADUANA EL PASO" />
</cfdi:Parte>
<cfdi:Parte cantidad="5" unidad="PIEZA" descripcion="WIRLESS CHARGER" valorUnitario="400.54" importe="2002.7">
<cfdi:InformacionAduanera numero="45" fecha="2011-03-08" aduana="ADUANA MONMTERREY" />
<cfdi:InformacionAduanera numero="2345" fecha="2011-03-28" aduana="ADUANA LINARES" />
<cfdi:InformacionAduanera numero="3563456" fecha="2011-03-30" aduana="ADUANA BURGOS" />
</cfdi:Parte>
</cfdi:Concepto>
</cfdi:Conceptos>
Re: Factura Electronica y Pedimentos
Publicado: Lun Mar 28, 2011 10:06 am
por Dado
davidrf88 escribió:
<cfdi:Concepto unidad="PIEZA" noIdentificacion="0003" descripcion="IPAD 4" valorUnitario="15000" cantidad="1" importe="15000">
<cfdi:InformacionAduanera numero="23" fecha="2011-03-28" aduana="ADUANA MANTE" />
<cfdi:Parte cantidad="1" unidad="PIEZA" descripcion="HD FRONT CAM" valorUnitario="5000" importe="5000">
<cfdi:InformacionAduanera numero="2345" fecha="2011-03-28" aduana="ADUANA MATAMOROS" />
<cfdi:InformacionAduanera numero="23" fecha="2011-03-28" aduana="ADUANA EL PASO" />
</cfdi:Parte>
Segun yo (no me creas mucho, habra que hacer pruebas) es porque hay un problema de logica en el concepto, de la siguiente forma :
Si tienes un concepto que esta formado por varias partes, entonces el concepto NO DEBE tener informacion aduanera, debe tener informacion aduanera las partes individuales.
La situacion (pienso yo) es que las Partes NO SE REFIERE A PARTES ADICIONALES si no a partes que conforman el concepto.
Bueno, solo hay una forma de probar, quita el renglon
<cfdi:InformacionAduanera numero="23" fecha="2011-03-28" aduana="ADUANA MANTE" />
y vuelvelo a validar y me dices que panchos te hace el validador.