Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Impresora fiscal epson tmu220af problema con "CONCEPTOS NO GRAVADOS" (https://www.clubdelphi.com/foros/showthread.php?t=93701)

nicodel 21-01-2019 17:04:34

Impresora fiscal epson tmu220af problema con "CONCEPTOS NO GRAVADOS"
 
Hola Buenas Tardes espero me puedan ayudar. Estoy programando un controlador fiscal epson tmu220af para una estacion de servicios y tengo un problema con los impuestos internos. En el metodo SendInvoiceItem() le paso el valor del impuesto como impuestos internos fijos y el precio se lo paso con el imp. int. restado ya, pero no me lo calcula y no aparece la leyenda CONCEPTOS NO GRAVADOS. Esa el la manera correcta de calcular los impuestos internos o hay otro metodo? Desde ya muchas gracias. Saludos

oscarac 22-01-2019 20:12:11

se necesita mas informacion, pon algo del codigo

nicodel 22-01-2019 23:00:10

Ahi va parte del codigo para un tique factura A


PrinterFiscal1.PortNumber:= Form1.puerto_fiscal;
PrinterFiscal1.BaudRate:= '9600';



(abre el tique factura)
PrinterFiscal1.OpenInvoice(tipo_doc2, salida, letra , cant_copias, tipo_form, tipo_letra, resp_iva_em, resp_iva_com, nom_comp, nom_comp2, tipo_doc_comp, num_doc, bien_de_uso,domicilio1, domicilio2, domicilio3, num_remito1, num_remito2, tipo_item);



(envio un item, en este metodo se envia como ultimo parametro los impuestos internos fijos por ej. $7 para un litro de nafta)

PrinterFiscal1.SendInvoiceItem(descripcion, precio, cantidad, iva, calificador, cant_bultos, imp_int_por, descripcion2, descripcion3, descripcion4, tasa_acrecentamiento, imp_int_fijos);


(imprime el subtotal)

PrinterFiscal1.GetInvoiceSubtotal('P', '');

//envia un pago
PrinterFiscal1.SendInvoicePayment(texto_pago, importe_pago, descripcion_pago);


cierra tique factura
PrinterFiscal1.CloseInvoice(tipo_doc2, letra, texto);





El código funciona bien pero no discrimina los impuestos internos
el precio que le envio es: (precio - impuestos internos) / 1.21 (cuando iva = 21%)
y los impuestos internos: impuestos internos * cantidad de articulos del item


Esos impuestos deberian aparecer como CONCEPTOS NO GRAVADOS en el tique.

Desde ya muchas gracias.

oscarac 22-01-2019 23:28:30

pienso que el problema esta en el calculo, porque al imprimir no generas ningun procedimiento
coloca el codigo del calculo

nicodel 22-01-2019 23:56:58

Gracias por responder. Este seria el codigo completo

Código Delphi [-]
if Edit11.Text = 'A' then   //****** si es factura A
                            begin
                                //tipo_doc2:= 'T';

                              if RzRadioButton3.Checked = true then
                               tipo_doc2:= 'T'
                              else
                                 if RzRadioButton4.Checked = true then
                                  tipo_doc2:= 'M'
                                 else
                                    if RzRadioButton5.Checked = true then
                                     tipo_doc2:= 'D';

                                salida:= 'C';
                                letra:= 'A'; //deacuerdo a la condicion de iva del cliente
                                cant_copias:= '1';
                                tipo_form:= 'P';
                                tipo_letra:= '12';
                                resp_iva_em:= 'I';
                                resp_iva_com:= 'I'; //deacuerdo a la condicion de iva del cliente
                                nom_comp:= RzDBLabel1.Caption;
                                nom_comp2:= '';
                                tipo_doc_comp:= 'CUIT'; //deacuerdo a la condicion de iva del cliente
                                num_doc:= RzButtonEdit1.Text;
                                bien_de_uso:= 'N';
                                domicilio1:= RzDBLabel2.Caption;
                                domicilio2:= '';
                                domicilio3:= '';
                                num_remito1:= 'R1';
                                num_remito2:= 'R2';
                                tipo_item:= 'G';


                                //datos del documento
                                PrinterFiscal1.PortNumber:= Form1.puerto_fiscal;
                                PrinterFiscal1.BaudRate:= '9600';

                                PrinterFiscal1.OpenInvoice(tipo_doc2, salida, letra , cant_copias, tipo_form, tipo_letra, 
 resp_iva_em, resp_iva_com, nom_comp, nom_comp2, tipo_doc_comp,
                                                            num_doc, bien_de_uso,domicilio1, domicilio2, domicilio3, num_remito1, num_remito2, tipo_item);

                                //------------------------------------------------------------------------------------------

                                calificador:= 'M';
                                cant_bultos:= '0';
                                imp_int_por:= '0';
                                descripcion2:= '';
                                descripcion3:= '';
                                descripcion4:= '';
                                tasa_acrecentamiento:= '0';



                                ClientDataSet1.DisableControls;
                                ClientDataSet1.First;
                                while ClientDataSet1.Eof = false do
                                 begin
                                    cant:= RoundTo(ClientDataSet1.FieldByName('cantidad').AsFloat, -2);
                                    descripcion:= Copy(ClientDataSet1.FieldByName('descripcion').AsString, 1, 20);
                                    cantidad:= FloatToStr(cant * 100);
                                    iva:= FloatToStr(ClientDataSet1.FieldByName('iva').AsFloat * 100);

                                    precio_si:= ClientDataSet1.FieldByName('precio').AsFloat -     ClientDataSet1.FieldByName('val_imp_interno').AsFloat;


                                    if ClientDataSet1.FieldByName('iva').AsFloat = 21.00 then
                                     precio_si:= precio_si / 1.21
                                    else
                                       precio_si:= precio_si / 1.105;


                                    precio:= FloatToStr(RoundTo(precio_si * 1000 , 0));

                                    if ClientDataSet1.FieldByName('val_imp_interno').AsFloat <> 0.00 then
                                     begin
                                       imp_int:= ClientDataSet1.FieldByName('val_imp_interno').AsFloat;
                                       imp_int_fijos:= FloatToStr(RoundTo(imp_int * cant, 2) * 100);
                                     end
                                    else
                                       imp_int_fijos:= '0';

                                    //envia un item (aclaracion: paso primero precio y despues cantidad por una cuestion de redondeo, da un poco mas exacto)
                                    PrinterFiscal1.SendInvoiceItem(descripcion, precio, cantidad, iva, calificador, cant_bultos, 
 imp_int_por, descripcion2, descripcion3, descripcion4, tasa_acrecentamiento, imp_int_fijos);

                                    ClientDataSet1.Next;
                                 end;
                                 ClientDataSet1.EnableControls;


                                if RzRadioButton1.Checked = true then
                                 texto_pago:= 'Contado'
                                else
                                   if RzRadioButton2.Checked = true then
                                    texto_pago:= 'Cuenta Corriente';


                                subtotal1:= 'P';
                                subtotal2:= '';
                                PrinterFiscal1.GetInvoiceSubtotal(subtotal1, subtotal2);

                                descripcion_pago:= 'T';
                                importe_pago:= FloatToStr(StrToFloat(RzLabel12.Caption) * 100);

                                //envia un pago
                                PrinterFiscal1.SendInvoicePayment(texto_pago, importe_pago, descripcion_pago);

                                //----------------------------------------------------------------------------------------------

                                texto:= '';
                                //cierra el documento
                                PrinterFiscal1.CloseInvoice(tipo_doc2, letra, texto);
                            end;

derman 04-07-2019 17:16:52

Cita:

Empezado por nicodel (Mensaje 530415)
Gracias por responder.

Estimado,como te va? Vos sabes que tengo exactamente el mismo problema con mi codigo, que por cierto es casi identico al tuyo, solo que en VB6... y en el comando SendInvoiceItem le mando como ultimo parámetro un importe correspondiente a impuestos internos fijo pero no sale en el ticket.

Vos lo resolviste? como?

Gracias por tu tiempo.

nicodel 26-08-2019 15:51:38

Epson
 
Hola Derman lo solucione de esta manera:


if ClientDataSet1.FieldByName('val_imp_interno').AsFloat <> 0.00 then
begin
imp_int:= ClientDataSet1.FieldByName('val_imp_interno').AsFloat;
imp_int_fijos:= FloatToStr(RoundTo(imp_int * 100000000, 0));
end
else
imp_int_fijos:= '00000000';




Se multiplica el valor de impuestos internos por 10 millones ya que el controlador funciona de esa manera.


Cantidad * 1.000
Iva * 100
imp. int * 10.000.000


Perdon por la demora.
Espero te sirva. Saludos

derman 27-08-2019 02:06:55

Hola Nico, gracias por responder!

Me sirve tu respuesta, para cotejar justamente que probando y probando llegue a descubrir que el importe de Imp. Internos habia que mandarlo con 8 decimales. En ningun manual de la libreria ni de Epson encontrè esa info, y casi que lo descubri por error probando y probando.

Ahora tengo otro problema, y este si que ni idea a que se debe... cuando mando a imprimir 2 items con impuestos internos, la libreria me aborta la operaciòn con Error B640 el metodo CloseInvoice.

Tenès ideas de este error?? Alguna vez te paso?? Tenes algun manual PDF de este tipo de errores?

Gracias nuevamente y espero tu respuesta.

Saludos!

nicodel 29-08-2019 13:18:52

Hola derman la verdad nunca me paso eso. Fijate que al comando de cierre le estes pasando los parametros correctos con respecto al comando de apertura, porque no me parece que el error este en el impuesto interno. Subi si queres el codigo asi se puede detectar el problema viendolo. Saludos.

derman 29-08-2019 15:17:38

Cita:

Empezado por nicodel (Mensaje 533293)
Hola derman la verdad nunca me paso eso. Fijate que al comando de cierre le estes pasando los parametros correctos con respecto al comando de apertura, porque no me parece que el error este en el impuesto interno. Subi si queres el codigo asi se puede detectar el problema viendolo. Saludos.

nico, gracias por responder.
probando y probando y probando, llegue a la conclusion que el error se emite porque se supera el importe máximo de operaciones que tiene configurado la fiscal, que es de $ 10.000.
Averigue tambien que ese parámetro esta grabado en el equipo junto con el resto de la configuración, y que en el año 2014 AFIP saco una resolución para eliminar dicho monto tope de operacion, así que ahora estoy viendo como eliminar o modificar dicho parámetro.

Tengo el software SATF de Epson, así que estoy viendo como usarlo, y sino caerá el equipo en un técnico fiscal, ya que seria el personal adecuado para realizar este tipo de configuración.

Gracias nuevamente!!


La franja horaria es GMT +2. Ahora son las 00:24:23.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi