cancel
Showing results for 
Search instead for 
Did you mean: 

Factura en estado impreso (abrir:imprimido)

jorgedonoso2
Explorer
0 Kudos

Hola expertos,

tengo que generar una factura con la DI API en estado impreso pero no logro hacerlo.

Realice los cambios directamente en la DB y se que para que el estado se muestre como impreso los campos 'Printed' y 'InvntSttus' (tabla 'OINV') deben tener valores 'Y' y 'O' respectivamente.

código donde seteo datos para factura:

                    public static SAPbobsCOM.Documents facturaPuc;

                    facturaPuc.DocumentSubType = SAPbobsCOM.BoDocumentSubType.bod_InvoiceExempt;

                    facturaPuc.CardCode = (string)rdrOFEPUC["cardCode"];

                    facturaPuc.DocTotal = Convert.ToInt32(rdrOFEPUC["monto_total"]);

                    facturaPuc.UserFields.Fields.Item("U_DirInfo").Value = facturaPuc.Lines.UserFields.Fields.Item("U_DetLarg").Value;

                    facturaPuc.DocCurrency = strTipoMoneda;

                    facturaPuc.FolioNumber = Convert.ToInt32(rdrOFEPUC["nro_factura"]);

                    facturaPuc.FolioPrefixString = "34";

                    facturaPuc.Indicator = "34";

                    facturaPuc.PaymentGroupCode = iCondicionPagoSap;//Condicion de pago SAP

                    facturaPuc.UserFields.Fields.Item("U_N_OFE").Value = "E" + Convert.ToString(rdrOFEPUC["num_ofe"]);

                    NumeroOFE = Convert.ToString(rdrOFEPUC["num_ofe"]);

                    facturaPuc.UserFields.Fields.Item("U_DirDesp").Value = rdrOFEPUC["direccion_facturacion"].ToString();

                    facturaPuc.UserFields.Fields.Item("U_Tipo_Factura").Value = tipo_factura;

                    facturaPuc.UserFields.Fields.Item("U_Observaciones").Value = rdrOFEPUC["observaciones"].ToString();

                    facturaPuc.UserFields.Fields.Item("U_Orden_Compra").Value = rdrOFEPUC["num_orden_o_cotizacion"].ToString();

                    facturaPuc.UserFields.Fields.Item("U_Atencion").Value = rdrOFEPUC["atencion"].ToString();

                    facturaPuc.UserFields.Fields.Item("U_Email").Value = rdrOFEPUC["email"].ToString();

                    facturaPuc.UserFields.Fields.Item("U_Telefono").Value = rdrOFEPUC["telefono"].ToString();

                    facturaPuc.JournalMemo = "Facturas clientes - " + (string)rdrOFEPUC["cardCode"]; //Memo finanzas

                    facturaPuc.Printed = SAPbobsCOM.PrintStatusEnum.psYes; //Intento cambiar estado a impresa

Cuando se crea la factura sigue estando el estado como abierto y no como imprimido.

Favor alguien pueda ayudarme , lo agradecería muchísimo.

Saludos!!

Accepted Solutions (1)

Accepted Solutions (1)

agustin_marcoscividanes
Active Contributor
0 Kudos

Hola

seguramente te falte por actualizar otro u otros campos.

Te propongo dos opciones:

1. grabar la factura, buscarla y actualizar el estado mediante SDK.

2. comparar por SQL dos registros de factura, uno impreso y otro pendiente, buscar las diferencias y probar con los campos que difieren.

Me gusta más la primera opción porque el flujo es grabar y luego imprimir. Quizás el SDK no permita cambiar el estado de una factura hasta que se haya grabado en la base de datos.

Un saludo

Agustín Marcos Cividanes

jorgedonoso2
Explorer
0 Kudos

ok entonces seria algo así:

if (facturaPuc.Add() == 0)

{

         facturaPuc.Printed = SAPbobsCOM.PrintStatusEnum.psYes;

         facturaPuc.Update();

}

agustin_marcoscividanes
Active Contributor
0 Kudos

Hola

Mira este hilo: How to set an Invoice print flag to 'Open-Printed' 

Un saludo

Agustín Marcos Cividanes

jorgedonoso2
Explorer
0 Kudos

La forma de realizarlo es:

if (facturaPuc.Add() == 0)

{

       //con GetNewObjectKey() obtengo ultimo key insertado

      facturaPuc.GetByKey(Int32.Parse(oDictucPUC.GetNewObjectKey().ToString()));

      if (facturaPuc.Printed == 0)

      {

            facturaPuc.Printed = SAPbobsCOM.PrintStatusEnum.psYes;

            int ret = facturaPuc.Update();

            if (ret != 0)

            {

                   Console.WriteLine("Error al update: " + oDictucPUC.GetLastErrorDescription());

            }

      }

}

Saludos espero que les sea útil.

Answers (0)