Beispiel #1
0
        private string GetPrintString(string rekapitulacijaRacuna)
        {
            TextOutput output = new TextOutput(40);

            // OTVARANJE LADICE
            output.NewLine();
            output.Add(new TextItem(0, (char)27 + "" + 'p' + "" + (char)0 + "" + (char)100 + "" + (char)250, TextAlignment.Left));
            output.CommitLine();

            #region Header

            string nazivUstanove  = Global.Instance.Konfiguracija["NazivUstanove"];
            string adresaUstanove = Global.Instance.Konfiguracija["AdresaUstanove"];
            string pdvBroj        = Global.Instance.Konfiguracija["PDVBroj"];
            string nazivApoteke   = Global.Instance.Konfiguracija["NazivApoteke"];
            string adresaApoteke  = Global.Instance.Konfiguracija["AdresaApoteke"];

            output.Add(new TextItem(0, nazivUstanove, TextAlignment.Left));
            output.Add(new TextItem(40, "PDV:" + pdvBroj, TextAlignment.Right));
            output.CommitLine();

            output.NewLine();
            output.Add(new TextItem(0, adresaUstanove, TextAlignment.Left));
            output.CommitLine();

            output.NewLine();
            output.Add(new TextItem(0, nazivApoteke, TextAlignment.Left));
            output.CommitLine();

            output.NewLine();
            output.Add(new TextItem(0, adresaApoteke, TextAlignment.Left));
            output.CommitLine();

            output.NewLine();
            output.Add(new TextItem(0, Racun.GetByID(this.ID).VrijemeKreiranja.ToString(), TextAlignment.Left));
            output.CommitLine();

            #endregion

            output.AddBlankLine();
            output.AddBlankLine();

            #region Racun Header
            if (rekapitulacijaRacuna == "rekapitulacija")
            {
                output.NewLine();
                output.Add(new TextItem(3, "Rekapitulacija naplačenog iznosa za: ", TextAlignment.Left));
                output.CommitLine();
                output.NewLine();
                output.Add(new TextItem(9, "Fiskalni račun br:  " + this.BrojFisk.ToString(), TextAlignment.Left));
                output.CommitLine();
            }
            output.NewLine();
            output.Add(new TextItem(13, "Račun br:  " + this.ID.ToString(), TextAlignment.Left));
            output.CommitLine();

            output.AddBlankLine();


            #endregion

            output.AddSplitLine();

            #region Column Names
            output.NewLine();
            output.Add(new TextItem(0, "Šifra - Naziv", TextAlignment.Left));
            output.CommitLine();


            output.NewLine();
            TextItem itemRCP      = new TextItem(27, "RCP%", TextAlignment.Left);
            TextItem itemKolicina = new TextItem(7, "Količina", TextAlignment.Left);
            TextItem itemCijena   = new TextItem(18, "Cijena", TextAlignment.Left);
            TextItem itemIznos    = new TextItem(35, "Iznos", TextAlignment.Left);
            TextItem itemPdvIznos = new TextItem(0, "T PDV%", TextAlignment.Left);
            output.Add(itemRCP, itemCijena, itemIznos, itemKolicina, itemPdvIznos);
            output.CommitLine();

            #endregion

            output.AddSplitLine();

            #region Stavke

            Dictionary <string, TBR_Rekapitulacija> rekapitulacija = new Dictionary <string, TBR_Rekapitulacija>();

            decimal ukupnaVrijednostTakse = 0;
            decimal ukupanIznosTakse      = 0;
            //decimal ukupnaVrijednost = 0;
            //decimal ukupanIznos = 0;
            Decimal iznosPop = 0;

            foreach (RacunStavka stavka in this.Stavke)
            {
                if (stavka == null)
                {
                    continue;
                }

                output.NewLine();
                output.Add(new TextItem(0, stavka.Roba.Sifra, TextAlignment.Left),
                           new TextItem(6, stavka.Roba.Naziv, TextAlignment.Left));
                output.CommitLine();

                string tbr = stavka.Roba.PDVStopa.TBR;

                iznosPop = stavka.IznosKupac - stavka.IznosPopusta;

                output.NewLine();
                TextItem itemIznosValue  = new TextItem(40, String.Format("{0:0.00}", stavka.IznosKupac), TextAlignment.Right);
                TextItem itemCijenaValue = null;
                if (stavka.Participacija == 0)
                {
                    itemCijenaValue = new TextItem(24, String.Format("{0:0.00}", stavka.Cijena), TextAlignment.Right);
                }
                else
                {
                    decimal refCijena = Math.Round(stavka.ReferalnaCijena + stavka.ReferalnaCijena * stavka.PDVStopa / 100, 2);
                    itemCijenaValue = new TextItem(24, String.Format("{0:0.00}", refCijena), TextAlignment.Right);
                }
                TextItem itemKolicinaValue = new TextItem(15, String.Format("{0:0.00}", stavka.Kolicina), TextAlignment.Right);
                TextItem itemRCPValue      = new TextItem(27, stavka.Participacija + "%", TextAlignment.Left);
                TextItem itemPDVValue      = new TextItem(0, tbr + " " +
                                                          String.Format("{0:0}", stavka.Roba.PDVStopa.Stopa) + "%", TextAlignment.Left);
                output.Add(itemIznosValue, itemCijenaValue, itemKolicinaValue, itemPDVValue, itemRCPValue);
                output.CommitLine();

                // Ispis popusta na racunu ukoliko postoji ********************************************************
                Int16  popustInt;
                String popustInt1;

                if (stavka.Popust > 0)
                {
                    popustInt  = Convert.ToInt16(stavka.Popust);
                    popustInt1 = String.Format("{0:0}", stavka.Popust);
                    output.NewLine();
                    output.Add(new TextItem(0, "Iznos popusta", TextAlignment.Left));
                    output.CommitLine();
                    output.NewLine();
                    TextItem itemIznosPopustaValue = new TextItem(40, String.Format("{0:0.00}", -stavka.IznosPopusta), TextAlignment.Right); // Iznos popusta
                    //TextItem itemTaksaCijenaValue = new TextItem(24, String.Format("{0:0.00}", stavka.IznosTakse), TextAlignment.Right);
                    // TextItem itemTaksaKolicinaValue = new TextItem(15, String.Format("{0:0.00}", Decimal.One), TextAlignment.Right); // Treba
                    TextItem itemPopustValue   = new TextItem(26, popustInt + "%", TextAlignment.Left);                                      // Popust
                    TextItem itemTaksaPDVValue = new TextItem(0, tbr + " " +
                                                              String.Format("{0:0}", stavka.Roba.PDVStopa.Stopa) + "%", TextAlignment.Left); // Treba
                    output.Add(itemIznosPopustaValue, itemTaksaPDVValue, itemPopustValue);
                    output.CommitLine();

                    //ukupnaVrijednostTakse += stavka.IznosTakse - (Math.Round(stavka.IznosTakse * stavka.Roba.PDVStopa.Stopa / (100 + stavka.Roba.PDVStopa.Stopa), 2));
                    //ukupanIznosTakse += stavka.IznosTakse;
                }

                Int16  doplataInt;
                String doplataInt1;



                if (stavka.DoplataSaPDV != 0)
                {
                    doplataInt  = Convert.ToInt16(stavka.DoplataBezPDV);
                    doplataInt1 = String.Format("{0:0}", stavka.DoplataBezPDV);
                    output.NewLine();
                    output.Add(new TextItem(0, "Doplata do proizvođačke cijene", TextAlignment.Left));
                    output.CommitLine();
                    output.NewLine();
                    TextItem itemIznosDoplateValue = new TextItem(40, String.Format("{0:0.00}", stavka.DoplataSaPDV), TextAlignment.Right); // Iznos popusta
                    //TextItem itemTaksaCijenaValue = new TextItem(24, String.Format("{0:0.00}", stavka.IznosTakse), TextAlignment.Right);
                    // TextItem itemTaksaKolicinaValue = new TextItem(15, String.Format("{0:0.00}", Decimal.One), TextAlignment.Right); // Treba
                    //TextItem itemDoplataValue = new TextItem(26, doplataInt + "%", TextAlignment.Left); // Popust
                    TextItem itemKolicina1Value = new TextItem(15, String.Format("{0:0.00}", stavka.Kolicina), TextAlignment.Right);

                    TextItem DoplataCijenaValue = new TextItem(24, String.Format("{0:0.00}", Math.Round(Decimal.Divide(stavka.DoplataSaPDV, stavka.Kolicina), 2)), TextAlignment.Right);
                    //TextItem itemTaksaPDVValue = new TextItem(0, tbr + " " +
                    //    String.Format("{0:0}", stavka.Roba.PDVStopa.Stopa) + "%", TextAlignment.Left); // Treba
                    output.Add(itemIznosDoplateValue, itemKolicina1Value, DoplataCijenaValue);
                    output.CommitLine();

                    //ukupnaVrijednostTakse += stavka.IznosTakse - (Math.Round(stavka.IznosTakse * stavka.Roba.PDVStopa.Stopa / (100 + stavka.Roba.PDVStopa.Stopa), 2));
                    //ukupanIznosTakse += stavka.IznosTakse;
                }

                //*************************************************************************************************

                if (stavka.IznosTakse != 0)
                {
                    output.NewLine();
                    output.Add(new TextItem(0, "Taksa za otapanje sirupa", TextAlignment.Left));
                    output.CommitLine();
                    output.NewLine();
                    TextItem itemTaksaIznosValue    = new TextItem(40, String.Format("{0:0.00}", stavka.IznosTakse), TextAlignment.Right);
                    TextItem itemTaksaCijenaValue   = new TextItem(24, String.Format("{0:0.00}", stavka.IznosTakse), TextAlignment.Right);
                    TextItem itemTaksaKolicinaValue = new TextItem(15, String.Format("{0:0.00}", Decimal.One), TextAlignment.Right);
                    TextItem itemTaksaRCPValue      = new TextItem(27, stavka.Participacija + "%", TextAlignment.Left);
                    TextItem itemTaksaPDVValue      = new TextItem(0, tbr + " " +
                                                                   String.Format("{0:0}", stavka.Roba.PDVStopa.Stopa) + "%", TextAlignment.Left);
                    output.Add(itemTaksaIznosValue, itemTaksaCijenaValue, itemTaksaKolicinaValue, itemTaksaPDVValue, itemTaksaRCPValue);
                    output.CommitLine();

                    ukupnaVrijednostTakse += stavka.IznosTakse - (Math.Round(stavka.IznosTakse * stavka.Roba.PDVStopa.Stopa / (100 + stavka.Roba.PDVStopa.Stopa), 2));
                    ukupanIznosTakse      += stavka.IznosTakse;
                }

                //ukupnaVrijednost += stavka.Vrijednost;
                //ukupanIznos += stavka.Iznos;

                if (stavka.Pausal != 0)
                {
                    output.NewLine();
                    output.Add(new TextItem(0, "Paušal sa recepta", TextAlignment.Left), new TextItem(40, String.Format("{0:0.00}", stavka.Pausal), TextAlignment.Right));
                    output.CommitLine();
                    output.NewLine();
                }

                // RACUNANJE REKAPITULACIJE

                if (stavka.Roba != null && stavka.Roba.PDVStopa != null &&
                    !rekapitulacija.Keys.Contains(tbr))
                {
                    rekapitulacija.Add(tbr,
                                       new TBR_Rekapitulacija(tbr, stavka.Roba.PDVStopa.Stopa));
                }


                if (stavka.Roba != null && stavka.Roba.PDVStopa != null &&
                    rekapitulacija.Keys.Contains(tbr))
                {
                    rekapitulacija[tbr].UkupnoBezPDV += iznosPop + stavka.DoplataSaPDV; //- (stavka.Iznos - Global.Instance.Zaokruzenje(stavka.Iznos));
                    //rekapitulacija[tbr].UkupnoBezPDV += stavka.Vrijednost;
                    // ako ovako onda se izgubi svaki put 0.01 ili 0.02
                    // zato sto se svaki iznos pojedino zaokruzuje
                    //rekapitulacija[tbr].UkupnoSaPDV += Global.Instance.Zaokruzenje(stavka.Iznos);
                    rekapitulacija[tbr].UkupnoSaPDV += iznosPop + stavka.IznosTakse + stavka.Pausal + stavka.DoplataSaPDV;
                    //rekapitulacija[tbr].UkupnoSaPDV += stavka.IznosKupac + stavka.IznosTakse + stavka.Pausal;
                    rekapitulacija[tbr].IznosPDV += iznosPop + stavka.DoplataSaPDV - stavka.Vrijednost;
                    //rekapitulacija[tbr].IznosPDV += stavka.IznosKupac - stavka.Vrijednost;
                    //rekapitulacija[tbr].IznosTaksi += stavka.IznosTakse;
                }
            }

            #endregion
            if (this.Zaokruzenje != Decimal.Zero)
            {
                output.NewLine();
                output.Add(new TextItem(0, "zaokruženje računa :", TextAlignment.Left),
                           new TextItem(output.LineLenght, String.Format("{0:0.00}", this.Zaokruzenje), TextAlignment.Right));
                output.CommitLine();
            }
            output.AddSplitLine();

            #region Footer

            output.NewLine();
            Racun racNew = Racun.GetByID(this.ID);
            output.Add(new TextItem(0, "UKUPNO ZA PLAĆANJE:", TextAlignment.Left),
                       new TextItem(output.LineLenght, "KM= " + String.Format("{0:0.00}", racNew.Iznos + racNew.Zaokruzenje - racNew.IznosPopusta + racNew.DoplataSaPDV), TextAlignment.Right));
            output.CommitLine();

            output.AddSplitLine();

            #region Rekapitulacija

            #region Zaglavlje
            output.NewLine();
            output.Add(new TextItem(3, "ukupno", TextAlignment.Left));
            output.Add(new TextItem(22, "iznos", TextAlignment.Left));
            output.Add(new TextItem(32, "ukupno", TextAlignment.Left));
            output.CommitLine();
            output.NewLine();
            output.Add(new TextItem(2, "baz pdv", TextAlignment.Left));
            output.Add(new TextItem(10, "ts", TextAlignment.Left));
            output.Add(new TextItem(16, "%", TextAlignment.Left));
            output.Add(new TextItem(24, "pdv", TextAlignment.Left));
            output.Add(new TextItem(32, "sa_pdv", TextAlignment.Left));
            output.CommitLine();
            #endregion

            foreach (string tbr in rekapitulacija.Keys)
            {
                //decimal pdv_temp =
                //    Global.Instance.Zaokruzenje(rekapitulacija[tbr].UkupnoSaPDV) * 17 / 117;

                decimal pdv_temp =
                    Global.Instance.Zaokruzenje(rekapitulacija[tbr].UkupnoSaPDV) * rekapitulacija[tbr].Stopa / (100 + rekapitulacija[tbr].Stopa);

                output.NewLine();
                output.Add(new TextItem(9, String.Format("{0:0.00}",
                                                         //rekapitulacija[tbr].UkupnoBezPDV
                                                         Global.Instance.Zaokruzenje(rekapitulacija[tbr].UkupnoSaPDV) - pdv_temp
                                                         ), TextAlignment.Right));
                output.Add(new TextItem(10, rekapitulacija[tbr].TBR, TextAlignment.Left));
                output.Add(new TextItem(17, String.Format("{0:0.}",
                                                          rekapitulacija[tbr].Stopa) + "%", TextAlignment.Right));
                output.Add(new TextItem(27, String.Format("{0:0.00}",
                                                          //rekapitulacija[tbr].IznosPDV
                                                          pdv_temp
                                                          ), TextAlignment.Right));
                output.Add(new TextItem(38, String.Format("{0:0.00}",
                                                          //dodao ovdje zaokruzenje
                                                          Global.Instance.Zaokruzenje(rekapitulacija[tbr].UkupnoSaPDV)), TextAlignment.Right));
                output.CommitLine();
            }

            #endregion

            output.AddSplitLine();
            output.NewLine();
            output.Add(new TextItem(12, "* Hvala na posjeti !*", TextAlignment.Left));
            output.CommitLine();

            output.NewLine();
            output.Add(new TextItem(13, DateTime.Now.ToString(), TextAlignment.Left));
            output.CommitLine();

            output.AddBlankLine();
            output.AddBlankLine();
            output.AddBlankLine();
            output.AddBlankLine();
            output.AddBlankLine();
            output.AddBlankLine();
            output.AddBlankLine();
            output.AddBlankLine();

            // CUT COMMAND
            output.NewLine();
            output.Add(new TextItem(0, (char)29 + "" + (char)86 + "" + (char)1, TextAlignment.Left));
            output.CommitLine();

            //CUT za Star SP600
            //if (Global.Instance.BrojPoslovnice == 92)
            //{
            //    output.NewLine();
            //    output.Add(new TextItem(0, "1B 64 74", TextAlignment.Left));
            //    output.CommitLine();
            //}

            #endregion

            return(output.GetOutput());
        }
Beispiel #2
0
        public string GetPrintStringRekapitulacije()
        {
            Dictionary <string, decimal> Rekapitulacija = GetRekapitulacijuSmjene();

            TextOutput output = new TextOutput(40);

            #region Header

            string nazivUstanove  = Global.Instance.Konfiguracija["NazivUstanove"];
            string adresaUstanove = Global.Instance.Konfiguracija["AdresaUstanove"];
            string pdvBroj        = Global.Instance.Konfiguracija["PDVBroj"];
            string nazivApoteke   = Global.Instance.Konfiguracija["NazivApoteke"];
            string adresaApoteke  = Global.Instance.Konfiguracija["AdresaApoteke"];

            output.Add(new TextItem(0, nazivUstanove, TextAlignment.Left));
            output.CommitLine();

            output.NewLine();
            output.Add(new TextItem(0, adresaUstanove, TextAlignment.Left));
            output.CommitLine();

            output.NewLine();
            output.Add(new TextItem(0, pdvBroj, TextAlignment.Left));
            output.CommitLine();

            output.NewLine();
            output.Add(new TextItem(0, nazivApoteke, TextAlignment.Left));
            output.CommitLine();

            output.NewLine();
            output.Add(new TextItem(0, adresaApoteke, TextAlignment.Left));
            output.CommitLine();

            #endregion

            output.AddSplitLine();

            #region Smjena Header
            output.NewLine();
            output.Add(new TextItem(0, "Datum smjene:" + this.VrijemeZatvaranja.ToString("dd.MM.yyyy"), TextAlignment.Left));
            output.CommitLine();

            output.NewLine();
            output.Add(new TextItem(0, "Broj smjene:" + this.Broj.ToString(), TextAlignment.Left));
            output.CommitLine();

            output.NewLine();
            output.Add(new TextItem(0, "Odgovorno lice: " + this.OdgovornoLice.Ime + " " +
                                    this.OdgovornoLice.Prezime, TextAlignment.Left));
            output.CommitLine();


            #endregion

            output.AddSplitLine();

            #region Smjena

            output.NewLine();
            output.Add(new TextItem(0, "Ukupni PDV: " + Rekapitulacija["PDV"].ToString(), TextAlignment.Left));
            output.CommitLine();
            output.NewLine();
            output.Add(new TextItem(0, "Ukupni iznos bez PDV-a: " + (Rekapitulacija["Iznos"] -
                                                                     Rekapitulacija["PDV"]).ToString(), TextAlignment.Left));
            output.CommitLine();
            output.NewLine();
            output.Add(new TextItem(0, "Ukupni iznos: " + Rekapitulacija["Iznos"].ToString(), TextAlignment.Left));
            output.CommitLine();
            output.NewLine();
            output.Add(new TextItem(0, "Ukupno zaokruzenje: " + Rekapitulacija["Zaokruzenje"].ToString(), TextAlignment.Left));
            output.CommitLine();
            output.NewLine();
            output.Add(new TextItem(0, "Ukupno iznos taksi: " + Rekapitulacija["IznosTaksi"].ToString(), TextAlignment.Left));
            output.CommitLine();


            #endregion

            #region Footer
            output.AddBlankLine();
            output.AddBlankLine();
            output.AddBlankLine();
            output.AddBlankLine();
            output.AddBlankLine();
            output.AddBlankLine();
            output.AddBlankLine();
            output.AddBlankLine();

            // CUT COMMAND
            output.NewLine();
            output.Add(new TextItem(0, (char)29 + "" + (char)86 + "" + (char)1, TextAlignment.Left));
            output.CommitLine();
            #endregion

            return(output.GetOutput());
        }