Type Here to Get Search Results !

barcode Generator

 SQL>

SQL> CONN POS1018@ORCLPDB

Enter password:

Connected.

SQL> DECS ITMES

SP2-0042: unknown command "DECS ITMES" - rest of line ignored.

SQL> DESC ITEMS

 Name                                                  Null?    Type

 ----------------------------------------------------- -------- ------------------------------------

 ID                                                    NOT NULL NUMBER(10)

 BARCODE                                               NOT NULL VARCHAR2(50)

 TYP                                                            CHAR(1)

 NAME                                                  NOT NULL VARCHAR2(50)

 DESCRIPTIONS                                                   VARCHAR2(1000)

 BRANDS                                                         NUMBER(10)

 UNIT_TYPE                                                      NUMBER(10)

 CATEGORIES                                                     NUMBER(10)

 SUB_CATEGORIES                                                 NUMBER(10)

 BUY_PRICE                                                      NUMBER(11,2)

 SELL_PRICE                                                     NUMBER(11,2)

 STOCK                                                          NUMBER(10)

 IMAGE                                                          BLOB

 IMAGE_MIMETYPE                                                 VARCHAR2(2000)

 IMAGE_FILENAME                                                 VARCHAR2(2000)

 IMAGE_CHARACTERSET                                             VARCHAR2(2000)

 IMAGE_LAST_UPDATE                                              DATE

 ENTRY_BY                                                       NUMBER(10)

 ENTRY_DATE                                                     DATE

 UPDATE_BY                                                      NUMBER(10)

 UPDATE_DATE                                                    DATE

 BRANCH                                                NOT NULL NUMBER(10)

 MANUFACTURE                                                    NUMBER(10)


SQL> CREATE OR REPLACE FUNCTION generate_ean13_barcode (

  2      manufacturer_code IN NUMBER,   -- Manufacturer code (4 digits)

  3      product_code IN NUMBER         -- Product code (4 digits)

  4  ) RETURN VARCHAR2 IS

  5      barcode_without_check_digit VARCHAR2(12);

  6      check_digit NUMBER;

  7      sum_odd_pos NUMBER := 0;

  8      sum_even_pos NUMBER := 0;

  9      total_sum NUMBER := 0;

 10  BEGIN

 11      -- Ensure manufacturer_code and product_code are 4 digits

 12      IF manufacturer_code NOT BETWEEN 0 AND 9999 OR product_code NOT BETWEEN 0 AND 9999 THEN

 13          RAISE_APPLICATION_ERROR(-20001, 'Manufacturer code and product code must be 4-digit numbers.');

 14      END IF;

 15

 16      -- Convert manufacturer_code and product_code to 4-digit strings with leading zeros if necessary

 17      barcode_without_check_digit := LPAD(manufacturer_code, 4, '0') || LPAD(product_code, 4, '0');

 18

 19      -- Calculate the sum of odd and even positions (starting after the country code)

 20      FOR i IN 1..8 LOOP

 21          IF MOD(i, 2) = 0 THEN

 22              sum_even_pos := sum_even_pos + TO_NUMBER(SUBSTR(barcode_without_check_digit, i, 1)) * 3;

 23          ELSE

 24              sum_odd_pos := sum_odd_pos + TO_NUMBER(SUBSTR(barcode_without_check_digit, i, 1)) * 1;

 25          END IF;

 26      END LOOP;

 27

 28      -- Calculate total sum

 29      total_sum := sum_odd_pos + sum_even_pos;

 30

 31      -- Calculate check digit

 32      check_digit := (10 - MOD(total_sum, 10)) MOD 10;

 33

 34      -- Return the full 13-digit barcode (including the '590' country code)

 35      RETURN '746' || barcode_without_check_digit || check_digit;

 36  END;

 37  /


Function created.


SQL>

PL/SQL code

SELECT NVL(MAX(ID), 1000) + 1 INTO :P32_ID FROM ITEMS;

:P32_BARCODE := generate_ean13_barcode(:P32_MANUFACTURE, :P32_ID);




Post a Comment

0 Comments