Skocz do zawartości

[Sfera] Wydruk FP, a dziwne zachowanie tabeli VAT

Polecane posty

Drukując z programu, domyślnie proponowanym przez niego wzorcem, tabela VAT wygląda tak:

obraz.png.fd3d282ec000e8ce93b846a554c24836.png

Natomiast jak wydrukuję ją poprzez Sferę, to mam tyle wierszy ile jest pozycji na dokumencie:

obraz.png.dbd1fb4287ebf8745e395f0dd024cae4.png

Sprawdziłem logując informacje, że wzorzec wydruku jest dokładnie ten sam. Do wydruku wychodzę z poziomu IZamowieniaOdKlientow, bo chyba nie ma innej drogi. Co robię źle? A może Sfera ma babola? Poza samą tabelą, cały wydruk jest ok.

Kod drukujący:

 

int id; id = results.id;          	
// uzyskanie dokumentu do wydruku
IZamowieniaOdKlientow dokumenty = sfera.PodajObiektTypu<IZamowieniaOdKlientow>();
Dokument dokument = dokumenty.Dane.Wszystkie().Where(d => d.Id == id).Single();
if(dokument == null) { Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - Wskazany do wydruku dokument nie istnieje!"); response = "{ \"error\":\"Dokument nie istnieje!\" }"; }
else
  {
  Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - Drukowanie FP: "+dokument.NumerWewnetrzny.PelnaSygnatura);
  //pobranie managera drukowania
  IWydruki manager = sfera.PodajObiektTypu<IWydruki>();
  // utworzenie zadania drukowania
  using (IWydruk wydruk = manager.Utworz(TypWzorcaWydruku.FakturaProForma))
    {
    // wskazanie obiektu do wydruku
    wydruk.ObiektDoWydruku = dokument;
    using (var podmiot = sfera.PodajObiektTypu<IPodmioty>().Znajdz(dokument.Podmiot))
      {
      IOperacjePodmiotuDlaDokumentu operacje = podmiot.OperacjePodmiotuDlaDokumentu[dokument.Konfiguracja];
      wydruk.ParametryDrukowania.WybranyWzorzec = operacje.WzorzecWydruku;
      Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - Wzorzec: "+operacje.WzorzecWydruku.Nazwa);
      
      // wyeksportowanie dokumentu do pliku 
      wydruk.ObiektDoWydruku = dokument;
      string filename; filename = "fp"+dokument.Id;
      wydruk.ParametryDrukowania.NazwaDokumentuUzytkownika = filename;
      wydruk.ParametryDrukowania.SciezkaEksportu = @"C:\mocujemy_nexo\www\temp";
      wydruk.Eksport();
      Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd H:mm:ss")+" - Wydrukowano: " +wydruk.ParametryDrukowania.NazwaDokumentuUzytkownika+".pdf");                      
      response = "{ \"number\":\""+dokument.NumerWewnetrzny.PelnaSygnatura+"\", \"filename\":\""+filename+"\", \"id\":\""+dokument.Id+"\" }";
      }
    }       
  }

 

Link to postu

Faktycznie jest jakiś problem. Zapisujemy temat do zbadania i naprawy. Mogę na ten moment zaproponować obejście w postaci drukowania encji z obiektu biznesowego zamówienia. Chodzi mi o coś takiego:

DokumentZK proformaEncja = zamowienia.Dane.Wszystkie().Where(fp => fp.Id == idProformy).FirstOrDefault();
// najpierw ładujemy obiekt biznesowy IZamowienieOdKlienta
using (IZamowienieOdKlienta fp = zamowienia.Znajdz(proformaEncja))
{
	using (IWydruk wydrukFp = wydruki.Utworz(TypWzorcaWydruku.FakturaProForma))
    {
    	wydrukFp.ParametryDrukowania.WybranyWzorzec = wydrukFp.ParametryDrukowania.DostepneWzorce.FirstOrDefault(w => w.Domyslny);
      	// tutaj ważne, żeby jako obiekt do wydruku podać encję
      	// załadowaną w ramach obiektu biznesowego IZamowienieOdKlienta
      	// a nie tą pobraną z bazy:
        wydrukFp.ObiektDoWydruku = fp.Dane;
        wydrukFp.ParametryDrukowania.NazwaDokumentuUzytkownika = "testwydruku.pdf";
        wydrukFp.ParametryDrukowania.SciezkaEksportu = "C:\\Temp";
        wydrukFp.Eksport();
    }
}

 

Link to postu
  • 1 miesiąc temu...
  • 2 lata później...

Cześć,

z góry wybaczcie z odkopanie danego tematu.

Korzystając z opublikowanego przez Was kodu wyżej próbowałem do zaimplementować jako druk do FS/FD.

Korzystając z innego wątku natknąłem się na taki błąd:

 

Console.WriteLine("saveInvoiceWithPrint");

IWydruki wydruki = this.mainWindowViewModel.UchwytDoSfery.PodajObiektTypu<IWydruki>();
IDokumentySprzedazy dokumentySprzedazy = this.mainWindowViewModel.UchwytDoSfery.PodajObiektTypu<IDokumentySprzedazy>();
DokumentDS dokumentSprzedazy = dokumentySprzedazy.Dane.Wszystkie().Where(ds => ds.Id == receiptInvoiceObj.Id).FirstOrDefault();
Console.WriteLine("do druku Id:");
Console.WriteLine(dokumentSprzedazy.Id);

using (IDokumentSprzedazy ds = dokumentySprzedazy.Znajdz(dokumentSprzedazy))
{
  Console.WriteLine("Znalazlo dokument do druku");
  InsERT.Moria.Wydruki.Enums.TypWzorcaWydruku typWzorca = InsERT.Moria.Wydruki.Enums.TypWzorcaWydruku.FakturaSprzedazy;
  if (this.documentType == "FD")
  {
    typWzorca = InsERT.Moria.Wydruki.Enums.TypWzorcaWydruku.FakturaDetaliczna;
  }
  using (IWydruk printDoc = wydruki.Utworz(typWzorca))
  {
    printDoc.ParametryDrukowania.WybranyWzorzec = printDoc.ParametryDrukowania.DostepneWzorce.FirstOrDefault(w => w.Domyslny);

    Console.WriteLine("wzorzec: " + printDoc.ParametryDrukowania.WybranyWzorzec.Id);
    Console.WriteLine("do druku ds:");
    Console.WriteLine(ds.Dane.Id);

    printDoc.ObiektDoWydruku = ds.Dane;
    printDoc.ParametryDrukowania.NazwaDokumentuUzytkownika = ds.Dane.Id+".pdf";
    printDoc.ParametryDrukowania.SciezkaEksportu = @"C:\SubiektBL_Eksports";
    Console.WriteLine(ds.Dane.Id + ".pdf");

    printDoc.Eksport();
    Console.WriteLine(printDoc.OstatniaOperacjaZakonczonaSukcesem);

    if (!printDoc.OstatniaOperacjaZakonczonaSukcesem)
    {
      Console.WriteLine("problem z zapisem");
      foreach (var blad in printDoc.PobierzListeBledow())
      {
        Console.WriteLine("BLAD ZAPISU: "+ blad);
        // zapisz lub wyświetl błąd
      }
    }
    Console.WriteLine("Powinno wyeksportowac!");

    //if (SharedRegistryManager.GetValue(RegistryConfigurationKeys.Subiekt_PrinterEnabled) == "1")
    //{

    //}
  }

 

 

 

Konsola:

Invoice number: FS 35/CENTRALA/2024.
saveInvoiceWithPrint
do druku Id:
101174
Znalazlo dokument do druku
wzorzec: 1
do druku ds:
101174
101174.pdf
False
problem z zapisem
System.Collections.Generic.List`1[System.String]
BLAD ZAPISU: Nie znaleziono pliku wnf.pak.
Powinno wyeksportowac!

 

Niestety nie pokazuje żadnych problemów z zapisem, folder sprawdzany, utworzony. Można w nim zapisać plik.

 

Proszę o wsparcie w rozwiązaniu problemu.

Edytowane przez Kamil Ciszewski
udało się złapać błąd
Link to postu

Domniemam, że rozwiązanie jest uruchamiane poprzez skopiowanie zawartości sdk do katalogu z rozwiązaniem własnym, a nie poprzez wgranie go do binariów podmiotu. Jeśli tak to czy wspomniany plik jest faktycznie skopiowany do katalogu z rozwiązaniem? Plik wnf.pak zawiera wzorce dla wydruków niefskalnych - czy domyślnym wzorcem jest w tym przypadku wzorzec niefiskalny?

Link to postu
×
×
  • Dodaj nową pozycję...