Hızlı Satış ekranı kg- adet

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Hızlı Satış ekranı kg- adet

Mesaj gönderen Lord_Ares »

arkadaşlar, market barkod sistemi için çalışma yapıyorum. ilk deneyimim olduğu için sizlerden işleyiş mantığı hakkında fikir almak istedim. incelemem için bildiğiniza tavsiye ettiniz örnek varmı. Satış ekranında bir ürün barkodunu okuttuğumuzda bir adet ilgili üründen ekleyip yeni ürün eklmesi için barkod editi boşaltıyorum. Aynı üründen beş adet okutursa beş adet ekliyor. Böyle yapmamın nedeni her seferinde ürünü okut, yanına adet miktarı gir, enterla olayı olmasın daha hızlı işlem yapsın istedim. Fakat şurada takıldım. Satılan ürün adet değil kg veya gram ise yani açık satılan bir ürün ise ( peynir, zeytin gibi) ozaman mecburen miktar girdirmem gerekecek. Bilgisi olan veya incelemem için önerbilceğiniz market barkod sistemlerini paylaşırsanız sevinirim. ( açık kaynak kodlu olmasada olur. Sadece satış işleminde nasıl bir mantık var onu incelemek isitorum). İnternette bir çok program buldum, fakat istedim şekilde hızlı satış ekranı olanına denk gelmedim. Bulduklarımı kur, kaldır derken bilgisayarım telef oldu. Bu yüzden sizlerin denemiş olduğu veya bildiklerinizi incelemeye karar vererek sizlerden yardım taleb ediyorum.
Teşekkürler.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Hızlı Satış ekranı kg- adet

Mesaj gönderen aslangeri »

s.a.
en güzeli markete gidip 100,150,250 gr peyniri ayrı ayrı tarttırıp barkodlarını ajandana yapıştırman.
aynı işlemi farklı bir kaç üründede (zeytin, domates, salatalık vs) yapman. böylelikle elinde örnek barkodlar olacak.
terazi barkodları ile ilgili çalışma yaptınmı bilmiyorm. ilk iki karakter bayrak kodunu oluşturur. yani barkod ile ilgili bilgi verir. kaç basamak ürün kodu kaç basamak ağırlık kaç basamak virgülden sonrası onun bilgisini tutar (ilk iki karakter). genellikle 2X olur (yani yirmi ile başlar).
ondan sonra ürün kodu ve ağırlık bilgisi gelir. (X e göre ürün kodu ve ağırlık bilgilerinin kaç karakter olduğu belli olur.) son karakterde parity dir.
gerisi okuduğun barkodu (X e göre) pars etmene kalmış.
Bunun için ekstra bir program yüklemeye ihtiyacın yok gibime geliyor.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Hızlı Satış ekranı kg- adet

Mesaj gönderen unicorn64 »

sanırım aradığınız şey "ağırlık barkodu" olarak tabir edilen ean-13 standartındaki barkodlar...
@aslangeri nin bahsettiği şekilde bir yapı var ancak ben ilk iki karakteri 89 olarak hatırlıyorum...
89UUUUUKKGGGC şeklindeydi sanırım.. yani 89 ile başlıyor, sonraki 5 rakam ürünü belirtiyor, sonraki 2 rakam kilogram,sonraki 3 rakam gram ve en son rakam da kontrol karakteri şeklindeydi...
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Hızlı Satış ekranı kg- adet

Mesaj gönderen Lord_Ares »

anladım, çok teşekkür ediyorum arkadaşlar bilgi için.Dediniz şekilde denemeler yapayım
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Hızlı Satış ekranı kg- adet

Mesaj gönderen aslangeri »

@unicorn64; eğer özel bir uygulama yazmadıysan 89 değildir.
en basiti dediğim gibi marketten alış veriş yapılarak öğrenilebilir.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Hızlı Satış ekranı kg- adet

Mesaj gönderen unicorn64 »

yanlış hatırlıyor olabilirim. en son 2008de uğraşmıştım bu işle...
şöyle bişey buldum...
ayrıca şu ve bu adresde de var bişeyler...
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Hızlı Satış ekranı kg- adet

Mesaj gönderen Lord_Ares »

çok teşekkürler deneyerek çözücem umarım. Fakat açık ürünlerde ( yani terazi barkodu yoksa normal barkod ise) sanırım elle giriş için bir edit koyarak devam etmek gerekecek.
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Re: Hızlı Satış ekranı kg- adet

Mesaj gönderen White Rose »

arkadaşlar ben de şöyle bir çözüm bulmuştum bunun için
edit'ten barkodu okutunca ilk iki karakteri kontrol ettiriyorum, eğer bu rakam 2X ise (genelde 27,28,29) bu terazi barkodu anlamına geliyor ve kontrol başlıyor.
sonraki 5 karakter stok numarasını alıyoruz, bu stok numarası ile stok tablesinden stoka ait bilgileri çekiyoruz (fiyatı vss)
sonraki 5 karakter ağırlığı alıyoruz
işlemler...
Kullanıcı avatarı
slyvestr
Üye
Mesajlar: 8
Kayıt: 03 Oca 2009 09:19

Re: Hızlı Satış ekranı kg- adet

Mesaj gönderen slyvestr »

Posjet adında bir uygulamam var barkod kodunu 01001 01002 01003 şeklinde tanımlayacak barkod tipinide ean-13 değil Gramaj olarak belirleyeceksin. Bu şekilde açtığın stoğun örneğin peynir KL fiyatını gireceksin mesala 10 tl. Barkodlu teraziye gönderdiğin zaman ürünü. Tartıldığında 100 gr kabul edelim terazinin çıkardığı barkod etiketinde 2701001100 şeklinde barkod üretecek buradaki 27 barkod tipinin gramaj olduğunu 01001 stok kodunu 100 de gramını belirtir. Sen stoğunu buna uygun açtığın için barkodu okutunca 27 yi gördüğünde gramaj ürünler içinden 01001 stok kodlu ürünü bulup 100 gr satış yapıcaktır. Bunun için gerekli sql kodunu yazıcaksın tabi gerçi anlattığım şekilden sql çözmek artık basit.
hbilal
Üye
Mesajlar: 18
Kayıt: 04 Ara 2010 12:13

Re: Hızlı Satış ekranı kg- adet

Mesaj gönderen hbilal »

Merhabalar,
Konu ile alakalı bir sorum var. Yardımcı olursanız sevinirim.
Herhangi ürünü 3-4 sefer barkod ile okutuyoruz va dbgrid ekranına aynı ürün teker teker ekleniyor.
Örnek;
--------------------------------------------------
Adı____________Adet___Fiyat___Toplam
--------------------------------------------------
şişe su___________1_____2_______2
şişe su___________1_____2_______2
şişe su___________1_____2_______2
şişe su___________1_____2_______2
şişe su___________1_____2_______2
Ekmek___________1_____1_______1
Ekmek___________1_____1_______1
Ekmek___________1_____1_______1




Yapmak istediğim, Aynı ürünü defalarca okutup gbdrig'te adet sütununa okutulduğu kadar adet yazsın.
Örnek;
--------------------------------------------------
Adı____________Adet___Fiyat___Toplam
--------------------------------------------------
şişe su___________5_____2_______10
Ekmek___________3_____1_______3

Selamlar,
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Hızlı Satış ekranı kg- adet

Mesaj gönderen Battosai »

DBGrid'in datasetine insert demeden önce kayıt varmı diye kotrol edip varsa ilgili alanı güncelleyerek yapabilirsiniz. Bunun için locate fonksiyonu kullanılabilir.

Table1.Locate('barkodNO',Edit1.Text,[loCaseInsensitive]);
Table1.FieldByName('adet').asInteger = Table1.FieldByName('adet').asInteger + 1;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Hızlı Satış ekranı kg- adet

Mesaj gönderen mrmarman »

Bu mümkün ama alternatif olarak SQL Query önericem. :idea:
(1) Her eklenen ürün için -SQL sorguyu yeniden çalıştırmak şartıyla- GROUP BY ile ürün barcode ile gruplandırıp kapalı halde başlıklar halindeki ürünleri SUM() ile toplam olarak ifade edebilirsin. Bunun için DBGrid'i yine kullanmanda sakınca yok.
(2) Fatura baskısında ise başka bir SQL sorgu ile açık liste olarak tümünü ifade edersin.
(3) Sonucu SUM olarak tek sonuç olarak kullanırsın.
Resim
Resim ....Resim
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Hızlı Satış ekranı kg- adet

Mesaj gönderen Lord_Ares »

veritabanında ben şöyle yapmıştım, ürünkodu, barkodu diye alanlarım var, her barkod okuduğumda, ürün kodu tek ve rakam olduğu için locate gibi bir fonksiyonla kolayca kasmadan kontrol ettim varsa tablomu edit moda alıp toplam alanını bir arttırdım, yoksa tablomu append moda alıp bir ekledim.
Temel mantık olarak bu en basiti geldi gelmişti. Dilerseniz bu kod örneğini paylaşabilirim.
hbilal
Üye
Mesajlar: 18
Kayıt: 04 Ara 2010 12:13

Re: Hızlı Satış ekranı kg- adet

Mesaj gönderen hbilal »

Paylaşımlarınız için tşk ederim.
Veri bileşenleri Query, kullandım,
Sipariş oluşturmak için;
Query_Order (Orders) = Order_id, Invoice_no, Customer_id, Customer_group_id, Firstname, Lastname

Oluşturulan siparişe alınan ürünler için;
Query_Order_Product (Orders_Product) = Order_product_id, Order_id, Product_id, adet, miktar, toplam

iki veri tabanını ilişkilendirirken;
Query_Order_Product = Select * from order_product where Order_id = :Order_id

Kod olarak şu mantığı kullanmaya çalıştım,

Kod: Tümünü seç

eğer Query_Order_Product'te ürün yoksa ise
begin
okutulan ürünü ekle
end
else
begin
   eğer okutulan ürün listede varsa adet artır
else
   okutulan ürünü ekle   
end;
Elinizde hazır kod varsa daha çabuk kavrayabilirim.
Şimdiden teşekkürler.
Selamlar.
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Hızlı Satış ekranı kg- adet

Mesaj gönderen Lord_Ares »

Aşağıdaki şekilde bir fonksiyon ile edite okunan barkodu satış ekranındaki geçici veritabanında aratıyorum aynı kayıt varsa tabloyu edit moda alıp bir arttırıyorum yoksa append moda alıp bir ekliyorum.

Kod: Tümünü seç

FUNCTION TSATISEKR.STOK_VARMI:BOOLEAN;
  VAR
  DURUM:BOOLEAN;
  BEGIN

          DATALAR.TSTOKLAR_DB.LOCATE('BARKODU',SATISEKR.BORKODEDT.Text ,[loCaseInsensitive]);
          IF DATALAR.TSTOKLAR_DBBARKODU.AsString=SATISEKR.BORKODEDT.Text THEN DURUM:=TRUE ELSE DURUM:=FALSE;

  Result:=DURUM;
  END;
projenin tamamını size özelden gönderdim. Fikir olarak incelersiniz.
Satış ekranında barkod edite okuttuğumda editin onchange kısmına

Kod: Tümünü seç

PROCEDURE SATIS_EKLE;

BEGIN

 IF (SATISEKR.ADETEDT.Text<>'') AND ( SATISEKR.BORKODEDT.Text<>'')  THEN BEGIN
    IF DATALAR.TSATISYAP_DB.Locate('BARKODU', SATISEKR.BORKODEDT.Text,[loCaseInsensitive])=False then

            Begin

            DATALAR.TSATISYAP_DB.Append;
            DATALAR.TSATISYAP_DBURUNADI.AsString:= DATALAR.TSTOKLAR_DBURUNADI.AsString;
            DATALAR.TSATISYAP_DBBARKODU.AsString:=DATALAR.TSTOKLAR_DBBARKODU.AsString;
            DATALAR.TSATISYAP_DBFIYAT.AsCurrency:=DATALAR.TSTOKLAR_DBSATFIYATI.AsCurrency;
            DATALAR.TSATISYAP_DBMIKTAR.AsInteger:=StrToInt(SATISEKR.ADETEDT.Text);
            DATALAR.TSATISYAP_DBTOPLAMS.AsCurrency:=DATALAR.TSATISYAP_DBFIYAT.AsCurrency*DATALAR.TSATISYAP_DBMIKTAR.AsInteger;
            SATISEKR.TOPLAM_TUTAR;
            DATALAR.TSATISYAP_DB.Refresh;
            SATISEKR.BORKODEDT.Clear;
            SATISEKR.ADETEDT.Clear;
            SATISEKR.BORKODEDT.SetFocus;
             end; // eğer kayıt yoksa

      IF DATALAR.TSATISYAP_DB.Locate('BARKODU', SATISEKR.BORKODEDT.Text,[loCaseInsensitive])=true then

Begin
           DATALAR.TSATISYAP_DB.Edit;
           DATALAR.TSATISYAP_DBMIKTAR.AsInteger:=DATALAR.TSATISYAP_DBMIKTAR.AsInteger+StrToInt(SATISEKR.ADETEDT.Text);
           DATALAR.TSATISYAP_DBTOPLAMS.AsCurrency:=DATALAR.TSATISYAP_DBFIYAT.AsCurrency*DATALAR.TSATISYAP_DBMIKTAR.AsInteger;
           SATISEKR.TOPLAM_TUTAR;
           DATALAR.TSATISYAP_DB.Locate('BARKODU', SATISEKR.BORKODEDT.Text,[loCaseInsensitive]);
           SATISEKR.BORKODEDT.Clear;
           SATISEKR.ADETEDT.Clear;

            DATALAR.TSATISYAP_DB.Refresh;
            SATISEKR.BORKODEDT.SetFocus;


end;
END;
END;
Cevapla