Beispiel #1
0
        public static IList TransformReaderList(MySql.Data.MySqlClient.MySqlDataReader aReader)
        {
            IList result = new ArrayList();

            while (aReader.Read())
            {
                SupplierInvoiceItem transaction = new SupplierInvoiceItem();
                transaction.ID                    = Convert.ToInt32(aReader["sii_id"]);
                transaction.EVENT                 = new SupplierInvoice(Convert.ToInt32(aReader["si_id"]));
                transaction.PART                  = new Part(Convert.ToInt32(aReader["part_id"]));
                transaction.WAREHOUSE             = new Warehouse(Convert.ToInt32(aReader["warehouse_id"]));
                transaction.QYTAMOUNT             = Convert.ToDouble(Convert.ToInt32(aReader["sii_amount"]));
                transaction.STOCK_CARD_ENTRY      = new StockCardEntry(Convert.ToInt32(aReader["sce_id"]));
                transaction.STOCK_CARD_ENTRY_TYPE = (StockCardEntryType)Enum.Parse(typeof(StockCardEntryType), aReader["sii_scentrytype"].ToString());
                transaction.STOCK_CARD            = new StockCard(Convert.ToInt32(aReader["sc_id"]));
                transaction.UNIT                  = new Unit(Convert.ToInt32(aReader["unit_id"]));
                transaction.PRICE                 = Convert.ToDouble(Convert.ToInt32(aReader["sii_price"]));
                transaction.DISC_PERCENT          = Convert.ToDouble(Convert.ToInt32(aReader["sii_discpercent"]));
                transaction.DISC_AMOUNT           = Convert.ToDouble(Convert.ToInt32(aReader["sii_discamount"]));
                transaction.TOTAL_DISCOUNT        = Convert.ToDouble(Convert.ToInt32(aReader["sii_totaldisc"]));
                transaction.SUBTOTAL              = Convert.ToDouble(Convert.ToInt32(aReader["sii_subtotal"]));
                transaction.NOTES                 = aReader["sii_notes"].ToString();
                transaction.DISC_A                = Convert.ToDouble(Convert.ToInt32(aReader["sii_disca"]));
                transaction.DISC_B                = Convert.ToDouble(Convert.ToInt32(aReader["sii_discb"]));
                transaction.DISC_C                = Convert.ToDouble(Convert.ToInt32(aReader["sii_discc"]));
                transaction.DISC_ABC              = aReader["sii_discabc"].ToString();
                transaction.GRN_ITEM              = new GoodReceiveNoteItem(Convert.ToInt32(aReader["grni_id"]));
                result.Add(transaction);
            }
            return(result);
        }
        protected override Event doGet(int ID)
        {
            m_command.CommandText = SupplierInvoice.GetByIDSQL(ID);
            MySql.Data.MySqlClient.MySqlDataReader r = m_command.ExecuteReader();
            SupplierInvoice st = SupplierInvoice.TransformReader(r);

            r.Close();
            m_command.CommandText = SupplierInvoiceItem.GetByEventIDSQL(ID);
            r = m_command.ExecuteReader();
            IList stis = SupplierInvoiceItem.TransformReaderList(r);

            r.Close();
            foreach (SupplierInvoiceItem sti in stis)
            {
                sti.EVENT            = st;
                sti.PART             = PartRepository.GetByID(m_command, sti.PART.ID);
                sti.STOCK_CARD_ENTRY = StockCardEntryRepository.FindStockCardEntryByEventItem(m_command, sti.ID, sti.STOCK_CARD_ENTRY_TYPE);
                if (sti.GRN_ITEM.ID > 0)
                {
                    sti.GRN_ITEM = GoodReceiveNoteRepository.FindGoodReceiveNoteItem(m_command, sti.GRN_ITEM.ID);
                }
                st.EVENT_ITEMS.Add(sti);
            }
            return(st);
        }
Beispiel #3
0
        protected override void doDelete(Event e)
        {
            GoodReceiveNote st = (GoodReceiveNote)e;//this.Get(e.ID);

            MySql.Data.MySqlClient.MySqlTransaction trc = m_connection.BeginTransaction();
            m_command.Transaction = trc;
            try
            {
                if (getEventStatus(st.ID) == EventStatus.Confirm)
                {
                    throw new Exception("Revise before delete");
                }

                m_command.CommandText = SupplierInvoiceItem.GetGRNUseBySupplierInvoice(st.EVENT_ITEMS);
                int count = Convert.ToInt32(m_command.ExecuteScalar());
                if (count > 0)
                {
                    throw new Exception("Can not delete this GRN, this GRN used by Supplier Invoice");
                }

                m_command.CommandText = GoodReceiveNoteItem.DeleteAllByEventSQL(st.ID);
                m_command.ExecuteNonQuery();
                m_command.CommandText = GoodReceiveNote.DeleteSQL(st.ID);
                m_command.ExecuteNonQuery();
                trc.Commit();
            }
            catch (Exception x)
            {
                trc.Rollback();
                throw x;
            }
        }
Beispiel #4
0
        public override bool Equals(object obj)
        {
            SupplierInvoiceItem e = (SupplierInvoiceItem)obj;

            if (e == null)
            {
                return(false);
            }
            return(e.ID == this.ID);
        }
        public static SupplierInvoiceItem FindSupplierInvoiceItem(MySql.Data.MySqlClient.MySqlCommand cmd, int poiID)
        {
            cmd.CommandText = SupplierInvoiceItem.GetByIDSQL(poiID);
            MySql.Data.MySqlClient.MySqlDataReader r = cmd.ExecuteReader();
            SupplierInvoiceItem result = SupplierInvoiceItem.TransformReader(r);

            r.Close();
            result.EVENT = PurchaseOrderRepository.GetHeaderOnly(cmd, result.EVENT.ID);
            result.EVENT.EVENT_ITEMS.Add(result);
            return(result);
        }
        public double GetTheLatestSIPrice(int supID, int partID, int unitID)
        {
            m_command.CommandText = SupplierInvoiceItem.GetTheLatestPOPrice(supID, partID, unitID);
            object r = m_command.ExecuteScalar();

            if (r == null)
            {
                return(0d);
            }
            double result = Convert.ToDouble(r);

            return(result);
        }
        public IList FindSIbyPartAndPONo(string find, IList exceptPOI, int supplierID, DateTime trDate)
        {
            StringBuilder poisSB = new StringBuilder();

            foreach (int i in exceptPOI)
            {
                poisSB.Append(i.ToString());
                poisSB.Append(',');
            }
            string pois = poisSB.ToString();

            pois = exceptPOI.Count > 0?pois.Substring(0, pois.Length - 1):"";

            m_command.CommandText = SupplierInvoiceItem.GetSearchByPartAndPONo(find, supplierID, pois, trDate);
            MySql.Data.MySqlClient.MySqlDataReader r = m_command.ExecuteReader();
            IList result = SupplierInvoiceItem.TransformReaderList(r);

            r.Close();
            foreach (SupplierInvoiceItem t in result)
            {
                m_command.CommandText = SupplierInvoice.GetByIDSQL(t.EVENT.ID);
                r       = m_command.ExecuteReader();
                t.EVENT = SupplierInvoice.TransformReader(r);
                r.Close();
                m_command.CommandText = Part.GetByIDSQLStatic(t.PART.ID);
                r      = m_command.ExecuteReader();
                t.PART = Part.GetPart(r);
                r.Close();
                m_command.CommandText = Unit.GetByIDSQLstatic(t.UNIT.ID);
                r      = m_command.ExecuteReader();
                t.UNIT = Unit.GetUnit(r);
                r.Close();
                m_command.CommandText = TermOfPayment.GetByIDSQLStatic(((SupplierInvoice)t.EVENT).TOP.ID);
                r = m_command.ExecuteReader();
                ((SupplierInvoice)t.EVENT).TOP = TermOfPayment.GetTOP(r);
                r.Close();
                m_command.CommandText = Warehouse.GetByIDSQLStatic(t.WAREHOUSE.ID);
                r           = m_command.ExecuteReader();
                t.WAREHOUSE = Warehouse.GetWarehouse(r);
                r.Close();
                m_command.CommandText = Unit.GetByIDSQLstatic(t.PART.UNIT.ID);
                r           = m_command.ExecuteReader();
                t.PART.UNIT = Unit.GetUnit(r);
                r.Close();
            }
            return(result);
        }
        public IList GetSupplierInvoiceItem(int partID)
        {
            MySql.Data.MySqlClient.MySqlDataReader rdr;
            Part      p      = PartRepository.GetByID(m_command, partID);
            ArrayList result = new ArrayList();

            m_command.CommandText = SupplierInvoiceItem.GetByPartIDOrderByDateSQL(partID);
            rdr = m_command.ExecuteReader();
            IList piis = SupplierInvoiceItem.TransformReaderList(rdr);

            rdr.Close();
            foreach (SupplierInvoiceItem itm in piis)
            {
                itm.EVENT = SupplierInvoiceRepository.GetHeaderOnly(m_command, itm.EVENT.ID);
                itm.PART  = p;
                result.Add(itm);
            }

            m_command.CommandText = StockTakingItems.GetByPartIDOrderByDateSQL(partID);
            rdr = m_command.ExecuteReader();
            IList sti = StockTakingItems.TransformReaderList(rdr);

            rdr.Close();
            foreach (StockTakingItems itm in sti)
            {
                itm.EVENT = StockTakingRepository.GetHeaderOnly(m_command, itm.EVENT.ID);
                itm.PART  = p;
                result.Add(itm);
            }

            m_command.CommandText = OpeningStockItem.GetByPartIDOrderByDateSQL(partID);
            rdr = m_command.ExecuteReader();
            IList opi = OpeningStockItem.TransformReaderList(rdr);

            rdr.Close();
            foreach (OpeningStockItem itm in opi)
            {
                itm.EVENT = OpeningStockRepository.GetHeaderOnly(m_command, itm.EVENT.ID);
                itm.PART  = p;
                result.Add(itm);
            }

            result.Sort(new Profit.Server.PartRepository.EventDateComparer());
            return(result);
        }
Beispiel #9
0
        private void assertInvoiceAlreadyGenerated(GoodReceiveNoteItem item)
        {
            m_command.CommandText = SupplierInvoiceItem.GetGRNUseBySupplierInvoice(item.ID);
            MySql.Data.MySqlClient.MySqlDataReader r = m_command.ExecuteReader();
            IList invs = SupplierInvoiceItem.TransformReaderList(r);

            r.Close();
            foreach (SupplierInvoiceItem x in invs)
            {
                m_command.CommandText = SupplierInvoice.GetByIDSQL(x.EVENT.ID);
                r       = m_command.ExecuteReader();
                x.EVENT = SupplierInvoice.TransformReader(r);
                r.Close();
            }
            if (invs.Count > 0)
            {
                throw new Exception("GRN Part [" + item.PART.CODE + "] is used by Supplier Invoice [" + ((SupplierInvoiceItem)invs[0]).EVENT.CODE + "], please delete supplier invoice first.");
            }
        }
 protected override void doSave(Event e)
 {
     MySql.Data.MySqlClient.MySqlTransaction trc = m_connection.BeginTransaction();
     try
     {
         m_command.Transaction = trc;
         DateTime trDate     = DateTime.Today;
         string   codesample = AutoNumberSetupRepository.GetCodeSampleByDomainName(m_command, "SupplierInvoice");
         Event    codeDate   = FindLastCodeAndTransactionDate(codesample);
         string   lastCode   = codeDate == null ? string.Empty : codeDate.CODE;
         DateTime lastDate   = codeDate == null ? trDate : codeDate.TRANSACTION_DATE;
         int      trCount    = RecordCount();
         e.CODE = AutoNumberSetupRepository.GetAutoNumberByDomainName(m_command, "SupplierInvoice", e.CODE, lastCode, lastDate, trDate, trCount == 0);
         SupplierInvoice stk = (SupplierInvoice)e;
         m_command.CommandText = e.GetInsertSQL();
         m_command.ExecuteNonQuery();
         m_command.CommandText = SupplierInvoice.SelectMaxIDSQL();
         stk.ID = Convert.ToInt32(m_command.ExecuteScalar());
         foreach (SupplierInvoiceItem item in stk.EVENT_ITEMS)
         {
             item.PART.UNIT_CONVERSION_LIST = PartRepository.GetUnitConversionsStatic(m_command, item.PART.ID);
             m_command.CommandText          = item.GetInsertSQL();
             m_command.ExecuteNonQuery();
             m_command.CommandText = SupplierInvoiceItem.SelectMaxIDSQL();
             item.ID = Convert.ToInt32(m_command.ExecuteScalar());
         }
         trc.Commit();
     }
     catch (Exception x)
     {
         e.ID = 0;
         foreach (EventItem item in e.EVENT_ITEMS)
         {
             item.ID = 0;
         }
         trc.Rollback();
         throw x;
     }
 }
Beispiel #11
0
        public static StockCard FindStockCardHeader(MySql.Data.MySqlClient.MySqlCommand cmd, long partId,
                                                    long locationId, Period periodId, DateTime trDate)
        {
            cmd.CommandText = String.Format("select * from table_stockcard where part_id = {0} and warehouse_id = {1} and period_id = {2}", partId, locationId, periodId.ID);
            MySql.Data.MySqlClient.MySqlDataReader r = cmd.ExecuteReader();
            StockCard sc = StockCard.TransformReader(r);

            r.Close();
            if (sc != null)
            {
                sc.PERIOD    = PeriodRepository.FindPeriod(cmd, sc.PERIOD.ID);
                sc.WAREHOUSE = StockCardRepository.FindWarehouse(cmd, sc.WAREHOUSE.ID);

                cmd.CommandText = StockCardEntry.FindByStockCard(sc.ID, periodId.START_DATE, trDate);
                MySql.Data.MySqlClient.MySqlDataReader rx = cmd.ExecuteReader();
                sc.STOCK_CARD_ENTRIES = StockCardEntry.TransformReaderList(rx);
                rx.Close();
                foreach (StockCardEntry e in sc.STOCK_CARD_ENTRIES)
                {
                    if (e.STOCK_CARD_ENTRY_TYPE == StockCardEntryType.SupplierInvoice)
                    {
                        cmd.CommandText = SupplierInvoiceItem.GetByIDSQL(e.EVENT_ITEM.ID);
                        rx           = cmd.ExecuteReader();
                        e.EVENT_ITEM = SupplierInvoiceItem.TransformReader(rx);
                        rx.Close();
                    }
                    if (e.STOCK_CARD_ENTRY_TYPE == StockCardEntryType.CustomerInvoice)
                    {
                        cmd.CommandText = CustomerInvoiceItem.GetByIDSQL(e.EVENT_ITEM.ID);
                        rx           = cmd.ExecuteReader();
                        e.EVENT_ITEM = CustomerInvoiceItem.TransformReader(rx);
                        rx.Close();
                    }
                }
            }
            return(sc);
        }
        protected override void doDelete(Event e)
        {
            SupplierInvoice st = (SupplierInvoice)e;

            MySql.Data.MySqlClient.MySqlTransaction trc = m_connection.BeginTransaction();
            m_command.Transaction = trc;
            try
            {
                if (getEventStatus(st.ID) == EventStatus.Confirm)
                {
                    throw new Exception("Revise before delete");
                }
                m_command.CommandText = SupplierInvoiceItem.DeleteAllByEventSQL(st.ID);
                m_command.ExecuteNonQuery();
                m_command.CommandText = SupplierInvoice.DeleteSQL(st.ID);
                m_command.ExecuteNonQuery();
                trc.Commit();
            }
            catch (Exception x)
            {
                trc.Rollback();
                throw x;
            }
        }
        protected override void doUpdate(Event en)
        {
            MySql.Data.MySqlClient.MySqlTransaction trc = m_connection.BeginTransaction();
            m_command.Transaction = trc;
            try
            {
                SupplierInvoice e = (SupplierInvoice)en;
                m_command.CommandText = e.GetUpdateSQL();
                m_command.ExecuteNonQuery();

                foreach (SupplierInvoiceItem sti in e.EVENT_ITEMS)
                {
                    sti.PART.UNIT_CONVERSION_LIST = PartRepository.GetUnitConversionsStatic(m_command, sti.PART.ID);
                    if (sti.ID > 0)
                    {
                        m_command.CommandText = sti.GetUpdateSQL();
                        m_command.ExecuteNonQuery();
                    }
                    else
                    {
                        m_command.CommandText = sti.GetInsertSQL();
                        m_command.ExecuteNonQuery();
                        m_command.CommandText = SupplierInvoiceItem.SelectMaxIDSQL();
                        sti.ID = Convert.ToInt32(m_command.ExecuteScalar());
                    }
                }
                m_command.CommandText = SupplierInvoiceItem.DeleteUpdate(e.ID, e.EVENT_ITEMS);
                m_command.ExecuteNonQuery();
                trc.Commit();
            }
            catch (Exception x)
            {
                trc.Rollback();
                throw x;
            }
        }
Beispiel #14
0
        public IList FindGRNItemlistBySupplierDate(string find, int supID, DateTime trdate, IList grnIDS)
        {
            m_command.CommandText = SupplierInvoiceItem.GetGRNUseBySupplierInvoice();
            MySql.Data.MySqlClient.MySqlDataReader r = m_command.ExecuteReader();
            if (r.HasRows)
            {
                while (r.Read())
                {
                    int id = Convert.ToInt32(r[0]);
                    if (!grnIDS.Contains(id))
                    {
                        grnIDS.Add(id);
                    }
                }
            }
            r.Close();
            StringBuilder poisSB = new StringBuilder();

            foreach (int i in grnIDS)
            {
                poisSB.Append(i.ToString());
                poisSB.Append(',');
            }
            string pois = poisSB.ToString();

            pois = grnIDS.Count > 0 ? pois.Substring(0, pois.Length - 1) : "";
            if (find == "")
            {
                m_command.CommandText = GoodReceiveNoteItem.GetGRNItemBySuppDate(supID, trdate, pois);
            }
            else
            {
                m_command.CommandText = GoodReceiveNoteItem.GetSearchByPartAndGRNNo(find, supID, pois, trdate);
            }
            r = m_command.ExecuteReader();
            IList result = GoodReceiveNoteItem.TransformReaderList(r);

            r.Close();
            foreach (GoodReceiveNoteItem t in result)
            {
                m_command.CommandText = GoodReceiveNote.GetByIDSQL(t.EVENT.ID);
                r       = m_command.ExecuteReader();
                t.EVENT = GoodReceiveNote.TransformReader(r);
                r.Close();

                m_command.CommandText = Part.GetByIDSQLStatic(t.PART.ID);
                r      = m_command.ExecuteReader();
                t.PART = Part.GetPart(r);
                r.Close();

                m_command.CommandText = Unit.GetByIDSQLstatic(t.UNIT.ID);
                r      = m_command.ExecuteReader();
                t.UNIT = Unit.GetUnit(r);
                r.Close();

                m_command.CommandText = Warehouse.GetByIDSQLStatic(t.WAREHOUSE.ID);
                r           = m_command.ExecuteReader();
                t.WAREHOUSE = Warehouse.GetWarehouse(r);
                r.Close();

                m_command.CommandText = Unit.GetByIDSQLstatic(t.PART.UNIT.ID);
                r           = m_command.ExecuteReader();
                t.PART.UNIT = Unit.GetUnit(r);
                r.Close();
            }
            return(result);
        }
Beispiel #15
0
        public void recalculateAvailable()
        {
            BALANCE_AVAILABLE    = 0;
            BOOK_AVAILABLE       = 0;
            BACK_ORDER_AVAILABLE = 0;
            if (STOCK_CARD_ENTRIES.Count == 0)
            {
                return;
            }
            foreach (StockCardEntry item in STOCK_CARD_ENTRIES)
            {
                switch (item.STOCK_CARD_ENTRY_TYPE)
                {
                case StockCardEntryType.OpeningStock:
                    BALANCE_AVAILABLE += item.AMOUNT;
                    break;

                case StockCardEntryType.StockTaking:
                    BALANCE_AVAILABLE += item.AMOUNT;
                    assertNotMinusBalanceStock();
                    break;

                case StockCardEntryType.PurchaseOrder:
                    BACK_ORDER_AVAILABLE += item.AMOUNT;
                    break;

                case StockCardEntryType.GoodReceiveNote:
                    BALANCE_AVAILABLE    += item.AMOUNT;
                    BACK_ORDER_AVAILABLE -= item.AMOUNT;
                    break;

                case StockCardEntryType.SalesOrder:
                    BOOK_AVAILABLE += item.AMOUNT;
                    break;

                case StockCardEntryType.DeliveryOrder:
                    BOOK_AVAILABLE    -= item.AMOUNT;
                    BALANCE_AVAILABLE -= item.AMOUNT;
                    break;

                case StockCardEntryType.PurchaseReturn:
                    BALANCE_AVAILABLE -= item.AMOUNT;
                    break;

                case StockCardEntryType.SalesReturn:
                    BALANCE_AVAILABLE += item.AMOUNT;
                    break;

                case StockCardEntryType.SupplierInvoice:
                    SupplierInvoiceItem sit = (SupplierInvoiceItem)item.EVENT_ITEM;
                    if (sit.GRN_ITEM != null)
                    {
                        if (sit.GRN_ITEM.ID == 0)
                        {
                            BALANCE += item.AMOUNT;
                        }
                    }
                    break;

                case StockCardEntryType.CustomerInvoice:
                    CustomerInvoiceItem cit = (CustomerInvoiceItem)item.EVENT_ITEM;
                    if (cit.DO_ITEM != null)
                    {
                        if (cit.DO_ITEM.ID == 0)
                        {
                            BALANCE -= item.AMOUNT;
                        }
                    }
                    break;

                case StockCardEntryType.POS:
                    BALANCE -= item.AMOUNT;
                    break;

                default:
                    break;
                }
            }
            BALANCE_AVAILABLE_RECALCULATE    = BALANCE_AVAILABLE;
            BOOK_AVAILABLE_RECALCULATE       = BOOK_AVAILABLE;
            BACK_ORDER_AVAILABLE_RECALCULATE = BACK_ORDER_AVAILABLE;
        }
Beispiel #16
0
        public void ProcessConfirm(EventItem item)
        {
            assertSamePartLocation(item.PART, item.WAREHOUSE);
            assertPeriodIsCurrent();
            assertInPeriodRange(item.EVENT.TRANSACTION_DATE);
            double qty = item.GetAmountInSmallestUnit();

            recalculateAvailable();
            switch (item.STOCK_CARD_ENTRY_TYPE)
            {
            case StockCardEntryType.OpeningStock:
                BALANCE += qty;
                BALANCE_AVAILABLE_RECALCULATE += qty;
                break;

            case StockCardEntryType.StockTaking:
                BALANCE += qty;
                BALANCE_AVAILABLE_RECALCULATE += qty;
                assertNotMinusBalanceStock();
                break;

            case StockCardEntryType.PurchaseOrder:
                BACK_ORDER += qty;
                BACK_ORDER_AVAILABLE_RECALCULATE += qty;
                break;

            case StockCardEntryType.GoodReceiveNote:
                BALANCE += qty;
                BALANCE_AVAILABLE_RECALCULATE += qty;
                BACK_ORDER -= qty;
                BACK_ORDER_AVAILABLE_RECALCULATE -= qty;
                assertNotMinusBackOrderStock();
                break;

            case StockCardEntryType.SalesOrder:
                BOOKED += qty;
                BOOK_AVAILABLE_RECALCULATE += qty;
                break;

            case StockCardEntryType.DeliveryOrder:
                BOOKED -= qty;
                BOOK_AVAILABLE_RECALCULATE -= qty;
                assertNotMinusBookedStock();
                BALANCE -= qty;
                BALANCE_AVAILABLE_RECALCULATE -= qty;
                assertNotMinusBalanceStock();
                break;

            case StockCardEntryType.PurchaseReturn:
                BALANCE -= qty;
                BALANCE_AVAILABLE_RECALCULATE -= qty;
                assertNotMinusBalanceStock();
                break;

            case StockCardEntryType.SalesReturn:
                BALANCE += qty;
                BALANCE_AVAILABLE_RECALCULATE += qty;
                break;

            case StockCardEntryType.SupplierInvoice:
                SupplierInvoiceItem sit = (SupplierInvoiceItem)item;
                if (sit.GRN_ITEM != null)
                {
                    if (sit.GRN_ITEM.ID == 0)
                    {
                        BALANCE += qty;
                        BALANCE_AVAILABLE_RECALCULATE += qty;
                    }
                }
                break;

            case StockCardEntryType.CustomerInvoice:
                CustomerInvoiceItem cit = (CustomerInvoiceItem)item;
                if (cit.DO_ITEM != null)
                {
                    if (cit.DO_ITEM.ID == 0)
                    {
                        BALANCE -= qty;
                        BALANCE_AVAILABLE_RECALCULATE -= qty;
                        assertNotMinusBalanceStock();
                    }
                }
                break;

            case StockCardEntryType.POS:
                BALANCE -= qty;
                BALANCE_AVAILABLE_RECALCULATE -= qty;
                assertNotMinusBalanceStock();
                break;

            default:
                break;
            }
            createStockCardEntry(item);
        }
Beispiel #17
0
        public DataSet GetStockReport(bool allPart, string partStart, string partEnd, bool allGroup,
                                      string groupStart, string groupEnd, DateTime asOfDate)
        {
            DataSet ds = new DataSet();

            m_cmd.CommandText = "delete from table_temp";
            m_cmd.ExecuteNonQuery();

            m_cmd.CommandText = Part.GetStockReport(allPart, partStart, partEnd, allGroup, groupStart, groupEnd);
            MySql.Data.MySqlClient.MySqlDataReader rdr = m_cmd.ExecuteReader();
            IList result = Part.GetAllStaticForReport(rdr);

            rdr.Close();
            //IList stockcards = new ArrayList();
            foreach (Part p in result)
            {
                p.UNIT       = PartRepository.GetUnitByID(m_cmd, p.UNIT.ID);
                p.PART_GROUP = PartRepository.GetPartGroupByID(m_cmd, p.PART_GROUP.ID);

                StockCard sc = new StockCard(p, null, null);
                m_cmd.CommandText = StockCardEntry.FindByStockCardEntryByPart(p.ID, new DateTime(2000, 1, 1), asOfDate);
                rdr = m_cmd.ExecuteReader();
                sc.STOCK_CARD_ENTRIES = StockCardEntry.TransformReaderList(rdr);
                rdr.Close();
                foreach (StockCardEntry e in sc.STOCK_CARD_ENTRIES)
                {
                    if (e.STOCK_CARD_ENTRY_TYPE == StockCardEntryType.SupplierInvoice)
                    {
                        m_cmd.CommandText = SupplierInvoiceItem.GetByIDSQL(e.EVENT_ITEM.ID);
                        rdr          = m_cmd.ExecuteReader();
                        e.EVENT_ITEM = SupplierInvoiceItem.TransformReader(rdr);
                        rdr.Close();
                    }
                    if (e.STOCK_CARD_ENTRY_TYPE == StockCardEntryType.CustomerInvoice)
                    {
                        m_cmd.CommandText = CustomerInvoiceItem.GetByIDSQL(e.EVENT_ITEM.ID);
                        rdr          = m_cmd.ExecuteReader();
                        e.EVENT_ITEM = CustomerInvoiceItem.TransformReader(rdr);
                        rdr.Close();
                    }
                }
                sc.recalculateAvailable();
                m_cmd.CommandText = string.Format(@"insert into table_temp 
                    (
                        string1,string2,string3,double1,double2
                    )
                    values   
                    (
                        '{0}','{1}','{2}',{3},{4}
                    )",
                                                  p.PART_GROUP.NAME + " ~ " + p.PART_GROUP.CODE,
                                                  p.CODE,
                                                  p.UNIT.NAME,
                                                  sc.BALANCE_AVAILABLE,
                                                  p.MINIMUM_STOCK
                                                  );
                m_cmd.ExecuteNonQuery();
                //stockcards.Add(sc);
            }
            return(ds);
        }
Beispiel #18
0
        public static double GetLatestPriceMovementItemPeriod(MySql.Data.MySqlClient.MySqlCommand m_command,
                                                              int partID, DateTime start, DateTime end)
        {
            MySql.Data.MySqlClient.MySqlDataReader rdr;
            Part      p      = PartRepository.GetByID(m_command, partID);
            ArrayList result = new ArrayList();

            m_command.CommandText = SupplierInvoiceItem.GetByPartIDOrderByDateRangeSQL(partID, start, end);
            rdr = m_command.ExecuteReader();
            IList piis = SupplierInvoiceItem.TransformReaderList(rdr);

            rdr.Close();
            foreach (SupplierInvoiceItem itm in piis)
            {
                itm.EVENT = SupplierInvoiceRepository.GetHeaderOnly(m_command, itm.EVENT.ID);
                itm.PART  = p;
                result.Add(itm);
            }

            m_command.CommandText = StockTakingItems.GetByPartIDOrderByDateSQL(partID);
            rdr = m_command.ExecuteReader();
            IList sti = StockTakingItems.TransformReaderList(rdr);

            rdr.Close();
            foreach (StockTakingItems itm in sti)
            {
                itm.EVENT = StockTakingRepository.GetHeaderOnly(m_command, itm.EVENT.ID);
                itm.PART  = p;
                result.Add(itm);
            }

            m_command.CommandText = OpeningStockItem.GetByPartIDOrderByDateSQL(partID);
            rdr = m_command.ExecuteReader();
            IList opi = OpeningStockItem.TransformReaderList(rdr);

            rdr.Close();
            foreach (OpeningStockItem itm in opi)
            {
                itm.EVENT = OpeningStockRepository.GetHeaderOnly(m_command, itm.EVENT.ID);
                itm.PART  = p;
                result.Add(itm);
            }
            result.Sort(new Profit.Server.PartRepository.EventDateComparer());

            double   average      = 0;
            double   price        = 0;
            double   priceBaseCcy = 0;
            Currency baseccy      = CurrencyRepository.GetBaseCurrency(m_command);

            for (int i = 0; i < result.Count; i++)
            {
                if (result[i] is OpeningStockItem)
                {
                    price = ((OpeningStockItem)result[i]).TOTAL_AMOUNT / ((OpeningStockItem)result[i]).GetAmountInSmallestUnit();
                    if (baseccy.ID == ((OpeningStock)((OpeningStockItem)result[i]).EVENT).CURRENCY.ID)
                    {
                        priceBaseCcy = price;
                    }
                    else
                    {
                        priceBaseCcy = CurrencyRepository.ConvertToBaseCurrency(m_command, ((OpeningStock)((OpeningStockItem)result[i]).EVENT).CURRENCY, price, DateTime.Today);
                    }
                }
                if (result[i] is StockTakingItems)
                {
                    price = ((StockTakingItems)result[i]).TOTAL_AMOUNT / ((StockTakingItems)result[i]).GetAmountInSmallestUnit();
                    if (baseccy.ID == ((StockTaking)((StockTakingItems)result[i]).EVENT).CURRENCY.ID)
                    {
                        priceBaseCcy = price;
                    }
                    else
                    {
                        priceBaseCcy = CurrencyRepository.ConvertToBaseCurrency(m_command, ((StockTaking)((StockTakingItems)result[i]).EVENT).CURRENCY, price, DateTime.Today);
                    }
                }
                if (result[i] is SupplierInvoiceItem)
                {
                    price = ((SupplierInvoiceItem)result[i]).SUBTOTAL / ((SupplierInvoiceItem)result[i]).GetAmountInSmallestUnit();
                    if (baseccy.ID == ((SupplierInvoice)((SupplierInvoiceItem)result[i]).EVENT).CURRENCY.ID)
                    {
                        priceBaseCcy = price;
                    }
                    else
                    {
                        priceBaseCcy = CurrencyRepository.ConvertToBaseCurrency(m_command, ((SupplierInvoice)((SupplierInvoiceItem)result[i]).EVENT).CURRENCY, price, DateTime.Today);
                    }
                }
                if (i == 0)
                {
                    average = priceBaseCcy;
                }
                else
                {
                    average = (average + priceBaseCcy) / 2;
                }
            }

            return(average < 0 ? -average : average);
        }
Beispiel #19
0
        //-------------
        //public void UpdatePart()
        //{
        //    MySql.Data.MySqlClient.MySqlCommand cmd = new MySql.Data.MySqlClient.MySqlCommand();
        //    cmd.Connection = m_connection;
        //    m_connection.Open();
        //    cmd.CommandText = m_entity.GetAllSQL();

        //    MySql.Data.MySqlClient.MySqlDataReader r = cmd.ExecuteReader();
        //    IList result = new ArrayList();
        //    while (r.Read())
        //    {
        //        PartUnit pu = new PartUnit();
        //        pu.PART = Convert.ToInt32(r["part_id"]);
        //        pu.UNIT = Convert.ToInt32(r["unit_id"]);
        //        result.Add(pu);
        //    }
        //    r.Close();
        //    foreach (PartUnit e in result)
        //    {
        //        cmd.CommandText = UnitConversion.GetByPartAndUnitConIDSQL(e.PART, e.UNIT);
        //        r = cmd.ExecuteReader();
        //        UnitConversion uc = UnitConversion.GetUnitConversion(r);
        //        r.Close();
        //        if (uc == null)
        //        {
        //            uc = new UnitConversion();
        //            uc.BARCODE = e.BARCODE;
        //            uc.CONVERSION_QTY = 1;
        //            uc.CONVERSION_UNIT = e.UNIT;
        //            uc.COST_PRICE = e.COST_PRICE;
        //            uc.ORIGINAL_QTY = 1;
        //            uc.PART = e;
        //            uc.SELL_PRICE = e.SELL_PRICE;
        //            cmd.CommandText = uc.GetInsertSQL();
        //            cmd.ExecuteNonQuery();
        //        }
        //    }
        //}
        //private class PartUnit
        //{
        //    public int PART, UNIT;

        //}
        public IList GetAllEvents(int partID)
        {
            ArrayList result = new ArrayList();

            OpenConnection();
            MySql.Data.MySqlClient.MySqlDataReader rdr;
            Part p = PartRepository.GetByID(m_cmd, partID);

            m_cmd.CommandText = PurchaseOrderItem.GetByPartIDSQL(partID);
            rdr = m_cmd.ExecuteReader();
            IList pois = PurchaseOrderItem.TransformReaderList(rdr);

            rdr.Close();
            foreach (PurchaseOrderItem itm in pois)
            {
                itm.EVENT = PurchaseOrderRepository.GetHeaderOnly(m_cmd, itm.EVENT.ID);
                itm.PART  = p;
                result.Add(itm);
            }

            m_cmd.CommandText = SalesOrderItem.GetByPartIDSQL(partID);
            rdr = m_cmd.ExecuteReader();
            IList sois = SalesOrderItem.TransformReaderList(rdr);

            rdr.Close();
            foreach (SalesOrderItem itm in sois)
            {
                itm.EVENT = SalesOrderRepository.GetHeaderOnly(m_cmd, itm.EVENT.ID);
                itm.PART  = p;
                result.Add(itm);
            }


            m_cmd.CommandText = GoodReceiveNoteItem.GetByPartIDSQL(partID);
            rdr = m_cmd.ExecuteReader();
            IList grnis = GoodReceiveNoteItem.TransformReaderList(rdr);

            rdr.Close();
            foreach (GoodReceiveNoteItem itm in grnis)
            {
                itm.EVENT = GoodReceiveNoteRepository.GetHeaderOnly(m_cmd, itm.EVENT.ID);
                itm.PART  = p;
                result.Add(itm);
            }

            m_cmd.CommandText = PurchaseReturnItem.GetByPartIDSQL(partID);
            rdr = m_cmd.ExecuteReader();
            IList prnis = PurchaseReturnItem.TransformReaderList(rdr);

            rdr.Close();
            foreach (PurchaseReturnItem itm in prnis)
            {
                itm.EVENT = PurchaseReturnRepository.GetHeaderOnly(m_cmd, itm.EVENT.ID);
                itm.PART  = p;
                result.Add(itm);
            }

            m_cmd.CommandText = SalesReturnItem.GetByPartIDSQL(partID);
            rdr = m_cmd.ExecuteReader();
            IList srnis = SalesReturnItem.TransformReaderList(rdr);

            rdr.Close();
            foreach (SalesReturnItem itm in srnis)
            {
                itm.EVENT = SalesReturnRepository.GetHeaderOnly(m_cmd, itm.EVENT.ID);
                itm.PART  = p;
                result.Add(itm);
            }

            m_cmd.CommandText = SupplierInvoiceItem.GetByPartIDSQL(partID);
            rdr = m_cmd.ExecuteReader();
            IList piis = SupplierInvoiceItem.TransformReaderList(rdr);

            rdr.Close();
            foreach (SupplierInvoiceItem itm in piis)
            {
                itm.EVENT = SupplierInvoiceRepository.GetHeaderOnly(m_cmd, itm.EVENT.ID);
                itm.PART  = p;
                if (itm.GRN_ITEM.ID == 0)
                {
                    result.Add(itm);
                }
            }

            m_cmd.CommandText = CustomerInvoiceItem.GetByPartIDSQL(partID);
            rdr = m_cmd.ExecuteReader();
            IList ciis = CustomerInvoiceItem.TransformReaderList(rdr);

            rdr.Close();
            foreach (CustomerInvoiceItem itm in ciis)
            {
                itm.EVENT = CustomerInvoiceRepository.GetHeaderOnly(m_cmd, itm.EVENT.ID);
                itm.PART  = p;
                if (itm.DO_ITEM.ID == 0)
                {
                    result.Add(itm);
                }
            }

            m_cmd.CommandText = POSItem.GetByPartIDSQL(partID);
            rdr = m_cmd.ExecuteReader();
            IList posi = POSItem.TransformReaderList(rdr);

            rdr.Close();
            foreach (POSItem itm in posi)
            {
                itm.EVENT = POSRepository.GetHeaderOnly(m_cmd, itm.EVENT.ID);
                itm.PART  = p;
                if (itm.DO_ITEM.ID == 0)
                {
                    result.Add(itm);
                }
            }

            m_cmd.CommandText = StockTakingItems.GetByPartIDSQL(partID);
            rdr = m_cmd.ExecuteReader();
            IList sti = StockTakingItems.TransformReaderList(rdr);

            rdr.Close();
            foreach (StockTakingItems itm in sti)
            {
                itm.EVENT = StockTakingRepository.GetHeaderOnly(m_cmd, itm.EVENT.ID);
                itm.PART  = p;
                result.Add(itm);
            }

            m_cmd.CommandText = OpeningStockItem.GetByPartIDSQL(partID);
            rdr = m_cmd.ExecuteReader();
            IList opi = OpeningStockItem.TransformReaderList(rdr);

            rdr.Close();
            foreach (OpeningStockItem itm in opi)
            {
                itm.EVENT = OpeningStockRepository.GetHeaderOnly(m_cmd, itm.EVENT.ID);
                itm.PART  = p;
                result.Add(itm);
            }

            m_cmd.CommandText = DeliveryOrderItem.GetByPartIDSQL(partID);
            rdr = m_cmd.ExecuteReader();
            IList doi = DeliveryOrderItem.TransformReaderList(rdr);

            rdr.Close();
            foreach (DeliveryOrderItem itm in doi)
            {
                itm.EVENT = DeliveryOrderRepository.GetHeaderOnly(m_cmd, itm.EVENT.ID);
                itm.PART  = p;
                result.Add(itm);
            }

            result.Sort(new EventDateComparer());
            return(result);
        }