using FarPoint.Excel.EntityClassLibrary.DrawingEx;
using FCM0000.Mail;
using FCOMMON;
using FEQ0000.Purchase;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace FEQ0000
{
    public partial class fPurchase_Add : fBase
    {
        BindingSource bsManu;
        BindingSource bsModel;
        dsPurchase.PurchaseRow dr;
        public Boolean repeatAdd = false;
        Boolean binit = false;
        string sidchk1 = string.Empty;
        string namechk1 = string.Empty;

        public fPurchase_Add(dsPurchase.PurchaseRow dr_)
        {
            InitializeComponent();
            Properties.Settings.Default["gwcs"] = FCOMMON.info.CS;
            Properties.Settings.Default["EEEntities"] = FCOMMON.info.CS;

            this.bs.DataSource = dr_;

            tbSID.Enabled = false; //입력못하게
            tbPumModel.Enabled = false;

            bsManu = new BindingSource();
            bsModel = new BindingSource();
            this.dr = dr_;
            this.KeyPreview = true;
            this.StartPosition = FormStartPosition.CenterScreen;
            this.KeyDown += (s1, e1) =>
            {
                if (e1.KeyCode == Keys.Escape) this.Close();
            };
            this.tbPumName.Leave += tbPumName_Leave;
            this.tbSupply.Leave += tbSupply_Leave;
            this.tbProject.Leave += tbProject_Leave;

            foreach (Control ctl in groupBox1.Controls)
            {
                if (ctl.GetType() == typeof(TextBox) || ctl.GetType() == typeof(ComboBox))
                {
                    ctl.KeyDown += ctl_KeyDown;
                }
            }

            //필수로
            if (FCOMMON.info.Login.gcode == "K4PM")
            {
                tbCostCenter.BackColor = Color.FromArgb(255, 255, 192);
                tbLineCode.BackColor = Color.FromArgb(255, 255, 192);
                tbManager.BackColor = Color.FromArgb(255, 255, 192);
            }
            this.tbPumPrice.Validated += (s1, e1) =>
            {

                if (tbPumPrice.Tag != null && tbPumPrice.Tag.ToString().Equals(tbPumPrice.Text))
                {

                }
                else
                {
                    tbPumPrice.Tag = tbPumPrice.Text;
                    if (decimal.TryParse(tbPumPrice.Text.Replace(",", ""), out decimal value))
                    {
                        tbPumPrice.Text = value.ToString("N0");

                    }
                }


            };
        }

        Boolean advInput = false;
        private void __Load(object sender, EventArgs e)
        {
            EnsureVisibleAndUsableSize();
            advInput = FCOMMON.Util.getBit(FCOMMON.info.Login.gpermission, (int)FCOMMON.eGroupPermission.purchase_adv);
            tbPumName.ImeMode = ImeMode.Alpha;

            //상태
            var stateList = FCOMMON.DBM.getCodeTable("04");
            this.cmbState.DisplayMember = "Value";
            this.cmbState.ValueMember = "Value";
            this.cmbState.DataSource = stateList;

            //costcenter
            var LstCost = FCOMMON.DBM.getCodeTable("68");
            this.tbCostCenter.DisplayMember = "Value";
            this.tbCostCenter.ValueMember = "Value";
            this.tbCostCenter.DataSource = LstCost;

            //line
            var LstLine = FCOMMON.DBM.getCodeTable("67");
            this.tbLineCode.DisplayMember = "Value";
            this.tbLineCode.ValueMember = "Value";
            this.tbLineCode.DataSource = LstLine;

            //구매-담당
            var LstMan = FCOMMON.DBM.getCodeTable("65");
            this.tbManager.DisplayMember = "Value";
            this.tbManager.ValueMember = "Value";
            this.tbManager.DataSource = LstMan;

            ////구매-승인
            //var LstAdm = FCOMMON.DBM.getCodeTable("66");
            //this.tbAdmin.DisplayMember = "Value";
            //this.tbAdmin.ValueMember = "Value";
            //this.tbAdmin.DataSource = LstAdm;

            //통화
            var LstCur = FCOMMON.DBM.getCodeTable("69");
            this.cmbCurrency.DisplayMember = "Value";
            this.cmbCurrency.ValueMember = "Value";
            this.cmbCurrency.DataSource = LstCur;



            //구매자비고
            var LstRemark = FCOMMON.DBM.getCodeList("70");
            this.cmbRemark.Items.Clear();
            this.cmbRemark.Items.Add("-- 선택 안함 --");
            foreach (var item in LstRemark)
            {
                cmbRemark.Items.Add(item.Value);
            }
            this.cmbRemark.SelectedIndexChanged += (s1, e1) =>
            {
                if (cmbRemark.SelectedIndex > 0)
                {
                    tbBigo.Text = cmbRemark.Text.Replace(@"\n", Environment.NewLine) + tbBigo.Text.Trim();
                }
            };
            cmbRemark.SelectedIndex = 0;


            //담당자목록
            var userList = FCOMMON.DBM.getUserList(); //.getGroupList("name", "Users", "[level] > 0 and [level] < 10");
            cmbReceive.Items.Clear();
            cmbReceive.Items.Add("-- 없음 --");
            foreach (var user in userList)
            {
                this.cmbReceive.Items.Add(string.Format("[{0}] {1}", user.Key, user.Value));
                this.cmbRequest.Items.Add(string.Format("[{0}] {1}", user.Key, user.Value));
            }

            dtPdate.Value = DateTime.Parse(dr.pdate);
            if (dr.IsindateNull() || dr.indate.isEmpty())
            {
                this.chkInDate.Checked = false;
            }
            else
            {
                this.chkInDate.Checked = true;
                dtInDate.Value = DateTime.Parse(dr.indate);
            }

            if (dr.IsprdateNull() || dr.prdate.isEmpty())
            {
                this.chkprdate.Checked = false;
            }
            else
            {
                this.chkprdate.Checked = true;
                dtPrdate.Value = DateTime.Parse(dr.prdate);
            }


            if (dr.IsedateNull() || dr.edate.isEmpty())
            {
                this.chkExp.Checked = false;
            }
            else
            {
                this.chkExp.Checked = true;
                dtExpDate.Value = DateTime.Parse(dr.edate);
            }

            ///입력된 데이터를 적용한다.
            if (cmbRequest.Items.Count > 0)
            {
                for (int i = 0; i < cmbRequest.Items.Count; i++)
                {
                    if (cmbRequest.Items[i].ToString().StartsWith("[" + dr.request + "]"))
                    {
                        cmbRequest.SelectedIndex = i;
                        break;
                    }
                }
            }
            else cmbRequest.Text = dr.request;

            if (cmbReceive.Items.Count > 1)
            {
                for (int i = 1; i < cmbReceive.Items.Count; i++)
                {
                    if (cmbReceive.Items[i].ToString().StartsWith("[" + dr.receive + "]"))
                    {
                        cmbReceive.SelectedIndex = i;
                        break;
                    }
                }
            }
            else cmbReceive.Text = dr.receive;



            tbSID.Text = dr.sid;
            tbSID.Tag = tbSID.Text;
            tbStorage.Text = dr.place;

            //230728
            if (dr.IscostcenterNull() == false)
                tbCostCenter.Text = dr.costcenter;
            else tbCostCenter.Text = string.Empty;
            if (dr.IslinecodeNull() == false)
                tbLineCode.Text = dr.linecode;
            else tbLineCode.Text = string.Empty;

            if (dr.IsmanuprocNull() == false)
                btManuProc.Text = dr.manuproc;
            else
                btManuProc.Text = string.Empty;

            //if (dr.manuproc == "") btManuProc.SelectedIndex = -1;
            //else btManuProc.Text = dr.manuproc; //190106
            if (dr.IsdeptNull() == false)
                btEQManu.Text = dr.dept;
            else
                btEQManu.Text = string.Empty;

            if (btEQManu.Text.isEmpty())
            {
                if (dr.asset != "") FCOMMON.Util.MsgE(
                    string.Format("장비 모델 명({0})이 있지만 해당 제조사가 없으므로 모델명이 제거 됩니다. 모델을 다시 지정 하세요", dr.asset));
                btEQModel.Text = string.Empty;
            }
            else btEQModel.Text = dr.asset;  //제조모델명

            cmbCurrency.Text = dr.currency;
            //if (cmbCurrency.SelectedIndex < 0 && cmbCurrency.Items.Count == 1)
            //    cmbCurrency.SelectedIndex = 0;

            tbPumName.Text = dr.pumname;
            tbPumName.Tag = tbPumName.Text;

            tbPumModel.Text = dr.pumscale;

            if (dr.IspumqtyNull()) tbQtyReal.Text = "0";   //230817
            else tbQtyReal.Text = dr.pumqty.ToString();

            if (dr.IspumqtyReqNull()) tbQtyReq.Text = "0";   //230817
            else tbQtyReq.Text = dr.pumqtyReq.ToString();

            if (dr.IspumidxNull()) tbPumIDX.Text = "-1";
            else tbPumIDX.Text = dr.pumidx.ToString();
            tbPumPrice.Text = dr.pumprice.ToString("N0");
            tbPumPriceD.Text = dr.pumpriceD.ToString("N0");
            tbPumAmt.Text = dr.pumamt.ToString("N0");   //천단위 구분기호 추가 181222
            tbPumUnit.Text = dr.pumunit;

            tbSupply.Text = dr.supply;
            tbSupply.Tag = tbSupply.Text;
            tbSupplyIndex.Text = dr.supplyidx.ToString();

            tbProject.Text = dr.project;
            tbProject.Tag = tbProject.Text;
            tbProjectIndex.Text = dr.projectidx.ToString();

            cmbState.Text = dr.state;

            if (dr.IsprocessNull() == false) btProcess.Text = dr.process;
            else btProcess.Text = string.Empty;
            if (btProcess.Text.isEmpty())
            {
                //181203 - 이 사용자가 마지막으로 사용한 공정값을 사용한다.
                var lastprocess = FCOMMON.DBM.getFirstValue("process", "purchase", "request like '%" + this.cmbRequest.Text + "%'", "pdate desc");
                if (lastprocess != "") btProcess.Text = lastprocess;

            }
            chk1.Checked = dr.chk1;
            chk2.Checked = dr.chk2;

            tbManager.Text = dr.purchase_manager;
            if (tbManager.Text.isEmpty() && tbManager.Items.Count == 1)
            {
                tbManager.Text = (tbManager.Items[0] as DataRowView)["Value"].ToString();
            }
            // tbAdmin.Text = dr.purchase_admin;

            tbSC.Text = dr.sc;
            tbPO.Text = dr.po;
            tbOrderNo.Text = dr.orderno;
            tbBigo.Text = dr.bigo;
            if (dr.IschkremarkNull()) tbBigoChk.Text = string.Empty;
            else tbBigoChk.Text = dr.chkremark;

            dtInDate.Text = dr.indate;
            dtExpDate.Text = dr.edate;
            dtPrdate.Text = dr.prdate;

            if (dr.IsinqtyNull() == false)
                tbInQty.Text = dr.inqty.ToString();
            //else tbInQty.Text = "0";

            //chkInDate.Checked = !dr.IsindateNull();
            //chkExp.Checked = !dr.IsedateNull();

            this.dtExpDate.Enabled = chkExp.Checked;
            this.dtInDate.Enabled = chkInDate.Checked;
            this.dtPrdate.Enabled = chkprdate.Checked;

            //일반사용자의경우에는 상태를 변경하지 못한다.
            int curLevel = Math.Max(FCOMMON.info.Login.level, FCOMMON.DBM.getAuth(FCOMMON.DBM.eAuthType.purchase));
            if (curLevel < 5)
            {
                if (dr.RowState == DataRowState.Detached || dr.RowState == DataRowState.Added)
                    cmbReceive.Enabled = false;

                cmbState.Enabled = false;
                if (cmbRequest.Text != "") cmbRequest.Enabled = false;

                //데이터가 편집 상태인데 요청자가 내가 아닌경우에도 편집 불가
                Boolean enb = true;
                if (dr.RowState == DataRowState.Unchanged && dr.request != FCOMMON.info.Login.no)
                    enb = false;
                if (tbSC.Text.Trim() != "") enb = false;

                if (enb == false) //일반 사용자는 쇼핑, 카드 잇으면 수정 불가
                {
                    btSave.Enabled = false;
                    btSaveAdd.Enabled = false;
                    groupBox1.Enabled = false;
                    groupBox2.Enabled = false;
                }
                tbBigoChk.Enabled = false;
                tbQtyReal.Enabled = false;
            }
            else
            {
                tbBigoChk.Enabled = true;
                tbQtyReal.Enabled = true;
            }

            if (advInput == false)
            {
                this.Width = 528;
                // this.linkLabel7.Enabled = false;
                this.tbProject.Enabled = false;
                this.tbProjectIndex.Enabled = false;
            }
            this.Show();
            Application.DoEvents();
            tbPumName.Focus();

            //이미지를 불러온다.
            if (dr.RowState != DataRowState.Detached && dr.RowState != DataRowState.Deleted && dr.RowState != DataRowState.Added)
            {
                if (dr.IspumidxNull() == false && dr.pumidx != -1)
                {
                    var img = FCOMMON.DBM.GetImageData("Items", "image", dr.pumidx);
                    if (img != null)
                    {
                        this.pictureBox1.Image = img;
                    }
                }
            }
            binit = true;


            if (dr.RowState == DataRowState.Detached || dr.RowState == DataRowState.Added)
            {
                sidchk1 = string.Empty;
                namechk1 = string.Empty;

                //복사된 자료는 isd가 잇으면 sid가 잇다면 자동 처리해준다.
                if (tbSID.Text.isEmpty()==false && tbSID.TextLength == 9)
                {
                    //sidchk1 = tbSID.Text;
                    namechk1 = tbPumName.Text.Trim();
                }
            }
            else
            {
                sidchk1 = tbSID.Text.Trim();
                namechk1 = tbPumName.Text.Trim();
            }

            timer1.Start();

        }

        string sidTrim(string sid)
        {
            return sid.Replace(" ", "").Replace("-", "").Replace("_", "").Trim();
        }

        void ctl_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                Control ctl = sender as Control;
                string nm = ctl.Name.ToLower();
                string search = ctl.Text.Trim();

                Console.WriteLine("inner keydown " + nm + ":" + search);

                switch (nm)
                {
                    case "cmbrequest":
                        //요청자가 마지막으로 입력한 자료의 process 를 찾아서 기입해준다.
                        var lastprocess = FCOMMON.DBM.getFirstValue("process", "purchase", "request like '%" + this.cmbRequest.Text + "%'", "pdate desc");
                        if (lastprocess != "") btProcess.Text = lastprocess;
                        tbSID.Focus();
                        break;
                    case "tbpumname":
                        Lov_Item(search, false);
                        break;
                    case "tbproject":
                        Lov_Project(search, false);
                        break;
                    case "tbsupply":
                        Lov_Supply(search, false);
                        break;
                    case "tbbigo":
                        e.Handled = true;
                        break;
                    default:
                        SendKeys.Send("{TAB}");
                        break;
                }
            }
        }
        private void linkLabel5_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            Lov_Item("", true);
        }

        void Lov_Item(string search, Boolean allowAll)
        {
            if (search == "" && allowAll == false)
            {
                namechk1 = string.Empty;
                sidchk1 = string.Empty;
                FCOMMON.Util.MsgE("품명은 필수 값 입니다");
                tbPumName.Focus();
                return;
            }
            else if (search.ToLower() != tbPumName.Tag.ToString().ToLower() || tbPumIDX.Text == "-1" || tbPumIDX.Text == "") //값이 바뀌엇다면 검색을 해준다.
            {
                var f = new FCM0000.fLovItem(search);
                if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    namechk1 = f.itemName;
                    sidchk1 = string.Empty;

                    //인덱스값이 다르면 모델 및 가격을 업데이트 한다.
                    tbPumName.Text = f.itemName;
                    tbPumName.Tag = f.itemName;

                    this.tbPumIDX.Text = f.item.ToString();
                    this.tbPumModel.Text = f.itemmodel;
                    this.tbPumPrice.Text = f.itemprice.ToString("N0");
                    this.tbPumPriceD.Text = f.itempriceD.ToString("N0");
                    this.tbSID.Text = f.SID;
                    this.tbSID.Tag = f.SID;
                    this.tbPumUnit.Text = f.itemUnit; //181214
                    this.tbStorage.Text = f.Storage;
                    this.tbPumModel.Enabled = this.tbPumModel.Text.isEmpty();

                    this.tbPumUnit.Enabled = false;
                    if (tbSID.Text != "") tbSID.Enabled = false;
                    else tbSID.Enabled = true;

                    //제품을 찾앗다면 suppy 등을 업데이트 해준다.
                    var pcInfo = FCOMMON.DBM.getLastPurchaseInfo(f.item);
                    if (pcInfo.idx != -1)
                    {
                        tbSupply.Text = pcInfo.supply;
                        tbSupplyIndex.Text = pcInfo.supplyidx.ToString();
                        if (pcInfo.project != "" && tbProject.Text == "")
                            tbProject.Text = pcInfo.project;
                    }
                    else
                    {
                        tbSupply.Text = f.itemSupply;
                        tbSupplyIndex.Text = f.itemSupplyidx.ToString();
                    }

                    //display image
                    var image = FCOMMON.DBM.GetImageData("Items", "image", int.Parse(tbPumIDX.Text));
                    var oimage = this.pictureBox1.Image;
                    this.pictureBox1.Image = image;
                    if (oimage != null) oimage.Dispose();
                }
            }
            if (tbPumModel.Enabled) tbPumModel.Focus();
            else this.tbQtyReq.Focus();
        }
        void Lov_Project(string search, Boolean allowAll)
        {
            if (search != "" || allowAll == true)
            {
                var f = new FCM0000.fLovProject(search);
                if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    this.tbProject.Text = f.val_Title;
                    this.tbProject.Tag = f.val_Title;
                    this.tbProjectIndex.Text = f.val_Index.ToString();
                    btSave.Focus();
                }
                else
                {
                    tbProject.SelectAll();
                    tbProject.Focus();
                }
            }
            else this.btSave.Focus();
        }
        void Lov_Supply(string search, Boolean allowAll)
        {
            if (search != "" || allowAll == true)
            {
                FCM0000.fLovSupply f = new FCM0000.fLovSupply(search);
                if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    tbSupply.Text = f.Title;
                    tbSupply.Tag = f.Title;
                    tbSupplyIndex.Text = f.Index.ToString();
                    if (advInput)
                        this.tbProject.Focus();
                    else
                        this.tbBigo.Focus();
                }
                else
                {
                    tbSupply.Focus();
                    tbSupply.SelectAll();
                }
            }
            else
            {
                if (advInput)
                    this.tbProject.Focus();
                else
                    this.tbBigo.Focus();
            }
        }
        private bool saveData()
        {
            this.Validate();
            bs.EndEdit();

            tbSID.Text = sidTrim(tbSID.Text);

            if (namechk1.isEmpty())
            {
                Util.MsgE("품목 검사가 진행되지 않았습니다\n품명을 입력한 후 엔터를 누르거나 [품명] 버튼을 눌러서 검색을 수행한 후 다시 시도하세요");
                tbPumName.Focus();
                Lov_Item(tbPumName.Text, true);
                return false;
            }

            //시드검사한 자료와 현재 입력된 시드가 다르면 검사를 다시 하게 한다
            if (this.tbPumName.Text.Trim().Equals(this.namechk1.Trim()) == false)
            {
                Util.MsgE("품명검사 자료가 변경되었습니다. 다시 검사 하세요");
                Lov_Item("", true);
                namechk1 = string.Empty;
                return false;
            }


            if (tbSID.Text.Equals("신규") || tbSID.Text.isEmpty())
            {
                //FCOMMON.Util.MsgI($"신규 SID로 인해 SID 검사를 진행하지 않습니다");
            }
            else
            {
                if (string.IsNullOrWhiteSpace(this.sidchk1))
                {
                    FCOMMON.Util.MsgE("SID검사가 필요합니다.\n상단의 검사 버튼을 눌러 SPR/NR 재고 여부를 확인 하세요");
                    btSIDChk.Focus();
                    return false;
                }

                //시드검사한 자료와 현재 입력된 시드가 다르면 검사를 다시 하게 한다
                if (this.tbSID.Text.Trim().Equals(this.sidchk1) == false)
                {
                    Util.MsgE("SID검사 자료가 변경되었습니다. 다시 검사 하세요");
                    sidchk1 = string.Empty;
                    return false;
                }
            }


            if (FCOMMON.info.Login.gcode == "K4PM")
            {
                if (tbCostCenter.Text.isEmpty())
                {
                    FCOMMON.Util.MsgE("CostCenter 를 입력하세요");
                    tbCostCenter.Focus();
                    return false;
                }
                if (tbLineCode.Text.isEmpty())
                {
                    FCOMMON.Util.MsgE("LineCode 를 입력하세요");
                    tbLineCode.Focus();
                    return false;
                }
                if (tbManager.Text.isEmpty())
                {
                    FCOMMON.Util.MsgE("구매담당자 를 입력하세요");
                    tbManager.Focus();
                    return false;
                }
            }


            //if (cbProcess.Text.Trim() == "")
            //{
            //    FCOMMON.Util.MsgE("추가정보내의 [공정]을 선택하세요.");
            //    cbProcess.Focus();
            //    return false;
            //}

            if (tbPumName.Text.isEmpty())
            {
                FCOMMON.Util.MsgE("품명이 없습니다.");
                tbPumName.Focus();
                return false;
            }

            //if (tbPumModel.Text == "")
            //{
            //    FCOMMON.Util.MsgE("제품 규격을 입력하세요.");
            //    tbPumModel.Focus();
            //    return false;
            //}

            if (tbQtyReq.Text == "")
            {
                FCOMMON.Util.MsgE("수량(요청)을 입력하세요.");
                tbQtyReq.Focus();
                return false;
            }

            //실수량은 구매담당자만 입력한다
            if (tbBigoChk.Enabled && (cmbState.Text == "PO" || cmbState.Text == "PR"))
            {
                var qtycnv = int.TryParse(tbQtyReal.Text.Replace(",", ""), out int qtyreq);
                if (qtycnv == false || qtyreq < 1)
                {
                    FCOMMON.Util.MsgE("수량(실 구매)을 입력하세요.");
                    tbQtyReal.Focus();
                    return false;
                }
            }

            if (advInput == true)
            {
                if (tbOrderNo.Text.isEmpty() == false && tbProjectIndex.Text != "-1")
                {
                    FCOMMON.Util.MsgI("구매경고\n" +
                        "프로젝트가 할당 되어있으며 CR/CF값이 입력되어있습니다.\n" +
                        "CR/CF 구매의 경우  프로젝트 파트리스트를 통해서 구매 신청 하세요\n" +
                        "이 화면은 NR구매요청 입니다");
                }

                if (tbProject.Text == "")
                {
                    //프로젝트명에 입력이 안되있다
                    if (tbProjectIndex.Text != "-1") this.tbProjectIndex.Text = "-1";
                }
                else
                {
                    //프로젝트에 뭔가를 입력했다
                    if (tbProjectIndex.Text == "-1")
                    {
                        FCOMMON.Util.MsgE("프로젝트가 선택되지 않았습니다. 직접입력은 허용되지 않습니다.\n" +
                            "프로젝트 명을 입력하고 Enter 키를 눌러서 관련  프로젝트를 선택하세요\n" +
                            "프로젝트가 없는 경우에는 비고란에 해당 내용을 기입하세요");
                        tbProject.Focus();
                        tbProject.SelectAll();
                        return false;
                    }
                }
            }

            if (tbStorage.Text.Equals("SPR"))
            {
                if (FCOMMON.Util.MsgQ("SPR 항목입니다. 저장할까요?") != DialogResult.Yes)
                    return false;
            }

            if (chkInDate.Checked)
            {
                if (int.TryParse(tbInQty.Text.Replace(",", ""), out int qty) == false)
                {
                    if (FCOMMON.Util.MsgQ("입고 정보가 설정되어 있지만 입고 수량값이 없습니다") != DialogResult.Yes)
                    {
                        tbInQty.Focus();
                        tbInQty.SelectAll();
                        return false;
                    }
                }
            }

            var overtime = DateTime.Now - DateTime.Parse("2019-01-09 00:00:00");
            if (overtime.TotalSeconds > 0 && FCOMMON.info.Login.gcode != "K4PM")
            {
                if (advInput == true && this.btProcess.Text.Trim() == "")
                {
                    if (FCOMMON.info.Login.level >= 5)
                    {
                        var dlg = FCOMMON.Util.MsgQ("[공정]을 입력하지 않고 진행 하시겠습니까?\n\n" +
                       "선택 대상이 없는 경우 문의 바랍니다.\n\n");
                        if (dlg != System.Windows.Forms.DialogResult.Yes)
                        {
                            btProcess.Focus();
                            return false;
                        }
                    }
                    else
                    {
                        FCOMMON.Util.MsgE("[공정]을 선택하세요\n\n" +
                        "선택 대상이 없는 경우 문의 바랍니다.\n\n");

                        btProcess.Focus();
                        return false;
                    }
                }
                if (advInput == true && btManuProc.Text.Trim() == "")
                {
                    if (FCOMMON.info.Login.level >= 5)
                    {
                        var dlg = FCOMMON.Util.MsgQ("[제조공정]을 입력하지 않고 진행 하시겠습니까?\n\n" +
                       "선택 대상이 없는 경우 문의 바랍니다.\n\n");
                        if (dlg != System.Windows.Forms.DialogResult.Yes)
                        {
                            btManuProc.Focus();
                            return false;
                        }
                    }
                    else
                    {
                        FCOMMON.Util.MsgE("[제조공정]을 선택하세요\n\n" +
                        "선택 대상이 없는 경우 문의 바랍니다.\n\n");

                        btManuProc.Focus();
                        return false;
                    }
                }
                if (advInput == true && this.btEQManu.Text.Trim() == "")
                {
                    if (FCOMMON.info.Login.level >= 5)
                    {
                        var dlg = FCOMMON.Util.MsgQ("[장비제조사]를 입력하지 않고 진행 하시겠습니까?\n\n" +
                        "선택 대상이 없는 경우 문의 바랍니다.\n\n");
                        if (dlg != System.Windows.Forms.DialogResult.Yes)
                        {
                            btEQManu.Focus();
                            return false;
                        }
                    }
                    else
                    {
                        FCOMMON.Util.MsgE("[장비제조사]를 선택하세요.\n\n" +
                        "선택 대상이 없는 경우 문의 바랍니다.\n\n");
                        btEQManu.Focus();
                        return false;
                    }
                }

            }

            //프로젝트명이 업다면 사유가 반드시 입력되어ㅑㅇ 하낟.
            if (tbProject.Text.isEmpty() && tbBigo.Text.isEmpty())
            {
                Util.MsgE("구매자 비고(=구매사유)를 입력하세요\n프로젝트가 없다면 사유가 입력되어야 합니다");
                tbBigo.Focus();
                return false;
            }

            //if (dr.RowState != DataRowState.Detached && dr.RowState != DataRowState.Added)
            //{
            //    if (dr.sc != tbSC.Text.Trim() && tbSC.Text != "")
            //    {
            //        //dtPdate.Value = DateTime.Now;
            //        this.cmbState.SelectedValue = "Approving";
            //        //if (dr.state == "00") dr.state = "01"; //approv 변경
            //    }
            //}

            var potxt = tbPO.Text.Trim();
            if (potxt.Length > 1 && cmbState.Text == "PR")
            {
                //if (cmbState.Items.Contains("PO"))
                    cmbState.Text = "PO";
            }


            //품목정보에 없는 데이터이므로 자료를 추가한다.
            if (tbPumIDX.Text == "-1")
            {
                var newidx = FCOMMON.DBM.addItem(tbPumName.Text, tbSID.Text, tbPumModel.Text.Trim(), decimal.Parse(tbPumPrice.Text.Replace(",", "")), tbSupply.Text.Trim(), int.Parse(tbSupplyIndex.Text), null);
                if (newidx > 0) tbPumIDX.Text = newidx.ToString();
            }
            else if (tbSID.Text != "" && tbSID.Text != tbSID.Tag.ToString())
            {
                //SID가 변경되었으므로 업데이트 해주낟.
                FCOMMON.DBM.UpdateItemSID(int.Parse(tbPumIDX.Text), tbSID.Text);
            }

            //수령을 했는데. 현재 상태가 04 미만이면 04(수령)으로 변경 한다.
            if (chkInDate.Checked)
            {
                var curState = this.cmbState.Text.Trim();
                if (curState.ToLower() == "po" || curState.ToLower() == "pr" ||
                    curState.ToLower() == "approving")
                {
                    this.cmbState.SelectedValue = "Received";
                }

            }

            //단가가없는경우 생성한다.
            if (decimal.TryParse(tbPumPrice.Text.Replace(",", ""), out decimal vprice) == false)
            {
                if (decimal.TryParse(tbPumPriceD.Text.Replace(",", ""), out decimal vpriced) == true)
                {
                    //applyDollerToWon();
                }
            }

            if (int.TryParse(tbQtyReq.Text.Replace(",", ""), out int vqtyreq) == false)
                tbQtyReq.Text = "0";
            if (int.TryParse(tbQtyReal.Text.Replace(",", ""), out int vqtyreal) == false)
                tbQtyReal.Text = "0";
            if (decimal.TryParse(tbPumPrice.Text.Replace(",", ""), out decimal vpumprice) == false)
                tbPumPrice.Text = "0";

            //요청 구매 수량이 다를경우 비고 입력이 필요함
            if (vqtyreal > 0 && vqtyreq > 0 && vqtyreq != vqtyreal)
            {
                if (tbBigoChk.Text.isEmpty())
                {
                    Util.MsgE("구매 요청/실 수량이 서로 다릅니다\n구매자 비고에 해당 사유를 입력하세요");
                    tbBigoChk.Focus();
                    return false;
                }
            }

            if (dr.RowState == DataRowState.Detached && vqtyreq < 1)
            {
                Util.MsgE($"요청수량을 입력하세요");
                tbQtyReq.Focus();
                return false;
            }

            dr.pumqty = vqtyreal;// int.Parse(tbPumQty.Text);
            dr.pumqtyReq = vqtyreq;// int.Parse(tbpumqtyReq.Text);
            dr.pumprice = vpumprice;// decimal.Parse(tbPumPrice.Text);

            dr.currency = cmbCurrency.Text.Trim();

            var applyprice = dr.pumprice;
            if (decimal.TryParse(tbPumPriceD.Text.Replace(",", ""), out decimal priced))
            {
                dr.pumpriceD = priced;
                applyprice = priced;
                if (vpumprice == 0)
                {
                    //원화단가가없다면 환산해준다
                    var 환율 = lbcurrentwon.Tag != null ? (float)lbcurrentwon.Tag : 0f;
                    vpumprice = ((decimal)환율 * priced);
                    dr.pumprice = vpumprice;
                }
            }
            else
            {
                dr.SetpumpriceDNull();
                dr.currency = "KRW";
            }
            if (vqtyreal > 0) dr.pumamt = dr.pumqty * dr.pumprice;
            else dr.pumamt = dr.pumqtyReq * dr.pumprice;

            if (dr.pumamt < 1)
            {
                FCOMMON.Util.MsgE($"금액이 없습니다. 단가 및 수량을 확인하세요\n해외 통화를 사용할 경우 환율을 고려한 국내단가를 입력해주세요\n환율을 자동으로 입력하려면 공용코드(69)의 FValue 에 값을 입력하세요");
                return false;
            }
            if (tbPumIDX.Text == "" || tbPumIDX.Text == "-1") dr.SetpumidxNull();
            else dr.pumidx = int.Parse(tbPumIDX.Text);
            dr.sid = tbSID.Text.Trim();

            if (chkExp.Checked) dr.edate = this.dtExpDate.Value.ToString("yyyy-MM-dd");
            else dr.SetedateNull();
            if (chkInDate.Checked) dr.indate = this.dtInDate.Value.ToString("yyyy-MM-dd");
            else dr.SetindateNull();
            if (chkprdate.Checked) dr.prdate = this.dtPrdate.Value.ToString("yyyy-MM-dd");
            else dr.SetprdateNull();

            dr.pdate = this.dtPdate.Value.ToString("yyyy-MM-dd");

            dr.gcode = FCOMMON.info.Login.gcode;
            if (cmbRequest.Text.IndexOf("]") != -1)
                dr.request = cmbRequest.Text.Substring(1, cmbRequest.Text.IndexOf("]") - 1);
            else
                dr.request = cmbRequest.Text.Trim();

            dr.sid = tbSID.Text;

            dr.asset = btEQModel.Text;
            dr.dept = btEQManu.Text;
            dr.manuproc = btManuProc.Text;

            dr.pumname = tbPumName.Text;
            dr.pumname = dr.pumname.Replace("*", "x");  //181031

            dr.pumscale = tbPumModel.Text;
            dr.pumscale = dr.pumscale.Replace("*", "x");  //181031
            dr.pumunit = tbPumUnit.Text;

            dr.supply = tbSupply.Text;
            dr.place = tbStorage.Text;
            dr.costcenter = tbCostCenter.Text;
            dr.linecode = tbLineCode.Text;

            dr.purchase_manager = tbManager.Text;
            // dr.purchase_admin = tbAdmin.Text;

            if (tbSupplyIndex.Text == "") dr.SetsupplyidxNull();
            else dr.supplyidx = int.Parse(tbSupplyIndex.Text);

            dr.project = tbProject.Text;
            if (tbProjectIndex.Text == "") dr.SetprojectidxNull();
            else dr.projectidx = int.Parse(tbProjectIndex.Text);

            dr.state = cmbState.Text.Trim();

            if (cmbReceive.Text.IndexOf("]") != -1)
                dr.receive = cmbReceive.Text.Substring(1, cmbReceive.Text.IndexOf("]") - 1);
            else
            {
                if (cmbReceive.SelectedIndex < 1) dr.receive = string.Empty;
                else dr.receive = cmbReceive.Text.Trim();
            }


            dr.process = btProcess.Text;
            dr.sc = tbSC.Text;
            dr.po = tbPO.Text;
            dr.orderno = tbOrderNo.Text;
            dr.bigo = tbBigo.Text;
            dr.chkremark = tbBigoChk.Text;

            if (chkInDate.Checked)
                dr.inqty = int.Parse(tbInQty.Text.Replace(",", ""));
            else dr.SetinqtyNull();

            //품정보가 업데이트 되어있으면 해당 데이터의 이미지를 업데이트 한다.(크기비교)
            //품정보가 없다면 그대로 생성을 해준다.
            if (tbPumIDX.Text == "" || tbPumIDX.Text == "-1")
            {

                //아이템을 추가해야하낟.
                byte[] pic = null;
                if (this.pictureBox1.Image != null && this.pictureBox1.Tag.ToString() == "U")
                {
                    //이미지를 변경해줘야 한다.
                    pic = FCOMMON.DBM.getImagByteArray(this.pictureBox1.Image);
                }
                var newidx = FCOMMON.DBM.addItem(dr.pumname, dr.sid, dr.pumscale, dr.pumprice, dr.supply, dr.supplyidx, pic);
                if (newidx != -1)
                {
                    dr.pumidx = newidx;
                    Console.WriteLine("new pumidx set = " + dr.pumidx.ToString());
                }
            }
            else
            {
                //아이템을 추가해야한다(변경된 이름은 
                if (this.pictureBox1.Image != null && this.pictureBox1.Tag.ToString() == "U")
                {
                    //이미지를 변경해줘야 한다.
                    FCOMMON.DBM.setImageData(this.pictureBox1.Image, "Items", "image", dr.pumidx);
                }
            }

            dr.EndEdit();

            return true;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (!saveData()) return;
            repeatAdd = false;
            DialogResult = System.Windows.Forms.DialogResult.OK;
        }

        private void chkInDate_CheckedChanged(object sender, EventArgs e)
        {
            this.dtInDate.Enabled = chkInDate.Checked;
        }

        private void chkExp_CheckedChanged(object sender, EventArgs e)
        {
            this.dtExpDate.Enabled = chkExp.Checked;
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbState.Text == "PR" || cmbState.Text == "PO")
            {
                if (chkprdate.Checked == false)
                {
                    chkprdate.Checked = true;
                    dtPrdate.Value = DateTime.Now;
                }
            }
            //string code = "";
            //if (cmbState.SelectedIndex < 0) label3.Text = "--";
            //else
            //{
            //    //var value = cmbState.DataSource as BindingSource;
            //    //var list = value.DataSource as Dictionary<string, string>;
            //    //var item = list.Values
            //    if (cmbState.Text.StartsWith("[") == false) return;
            //    code = cmbState.Text.ToString().Substring(1, 2);
            //    var desc = FCOMMON.DBM.getCodeSavlue("04", code);
            //    label3.Text = desc;

            //}
            //switch (code)
            //{
            //    case "01":
            //        label3.BackColor = Color.LightBlue;
            //        break;
            //    case "02":
            //        label3.BackColor = Color.SkyBlue;
            //        break;
            //    case "03":
            //        label3.BackColor = Color.Yellow;
            //        break;
            //    case "04":
            //        label3.BackColor = Color.Green;
            //        break;
            //    case "06":
            //    case "05":
            //        label3.BackColor = Color.Red;
            //        break;
            //    case "07":
            //        label3.BackColor = Color.Magenta;
            //        break;
            //    default:
            //        label3.BackColor = Color.LightGray;
            //        break;
            //}

        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (!saveData()) return;
            this.repeatAdd = true;
            DialogResult = System.Windows.Forms.DialogResult.OK;
        }

        private void tbPumQty_TextChanged(object sender, EventArgs e)
        {
            var b1 = int.TryParse(tbQtyReal.Text.Replace(",", ""), out int qtyreal);
            var b2 = int.TryParse(tbQtyReq.Text.Replace(",", ""), out int qtyreq);

            var amtstr = tbPumPrice.Text.Replace("\\", "").Replace(",", "").Replace("₩", "");
            var b3 = double.TryParse(amtstr, out double price);
            double amt = 0;

            //실구매수량이 잇으면 그걸로한다
            if (qtyreal > 0) amt = qtyreal * price;
            else amt = qtyreq * price;

            tbPumAmt.Text = amt.ToString("N0");
            //label18.Text = Util.Number2Hangle((long)price) + "원";
        }

        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {

        }

        private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {

        }




        private void linkLabel6_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {

        }

        private void linkLabel7_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {

        }

        void tbProject_Leave(object sender, EventArgs e)
        {
            //커서를 빠져나갈떄 사용자가 이름만 변경했다면 선택 idx를 제거해준다.
            var tb = sender as TextBox;
            if (tb.Text == "") tbProjectIndex.Text = "-1";
            else if (tb.Text != tb.Tag.ToString()) tbProjectIndex.Text = "-1";
        }

        void tbSupply_Leave(object sender, EventArgs e)
        {
            //커서를 빠져나갈떄 사용자가 이름만 변경했다면 선택 idx를 제거해준다.\
            var tb = sender as TextBox;
            if (tb.Text == "") tbSupplyIndex.Text = "-1";
            else if (tb.Text != tb.Tag.ToString()) tbSupplyIndex.Text = "-1";
        }

        void tbPumName_Leave(object sender, EventArgs e)
        {
            //커서를 빠져나갈떄 사용자가 이름만 변경했다면 선택 idx를 제거해준다.
            var tb = sender as TextBox;
            if (tb.Text == "") tbPumIDX.Text = "-1";
            else if (tb.Text != tb.Tag.ToString()) tbPumIDX.Text = "-1";
            if (tbPumIDX.Text == "-1")
            {
                tbPumModel.Enabled = true;
                tbPumUnit.Enabled = true;
            }
        }

        private void tbPumName_Click(object sender, EventArgs e)
        {
            //Lov_Item("", true);
        }

        private void tbPumName_TextChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click_1(object sender, EventArgs e)
        {
            Lov_Item(tbPumName.Text, true);
        }

        private void button2_Click_1(object sender, EventArgs e)
        {
            //lov 공급처
            Lov_Supply("", true);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            //lov 프로젝트
            Lov_Project("", true);
        }

        private void button4_Click(object sender, EventArgs e)
        {
            if (!Clipboard.ContainsImage())
            {
                FCOMMON.Util.MsgE("이미지를 먼저 클립보드에 복사 하세요.");
                return;
            }

            var image = Clipboard.GetImage();
            var oimage = this.pictureBox1.Image;
            this.pictureBox1.Image = image;
            this.pictureBox1.Tag = "U";
            if (oimage != null) oimage.Dispose();
        }

        private void button5_Click(object sender, EventArgs e)
        {
            //FCOMMON.fWebCamera f = new FCOMMON.fWebCamera(FCOMMON.info.camIndex);
            //if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            //{
            //    var bmp = f.bmp.Clone();
            //    Application.DoEvents();
            //    var oimag = this.pictureBox1.Image;
            //    this.pictureBox1.Image = (Image)bmp;
            //    if (oimag != null) oimag.Dispose();
            //}
        }

        private void button6_Click(object sender, EventArgs e)
        {
            OpenFileDialog od = new OpenFileDialog();
            if (od.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
            var image = Image.FromFile(od.FileName);
            var oimage = this.pictureBox1.Image;
            this.pictureBox1.Image = image;
            this.pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
            this.pictureBox1.Tag = "U";
            if (oimage != null) oimage.Dispose();
        }

        private void button7_Click(object sender, EventArgs e)
        {
            var datapath = FCOMMON.DBM.getCodeSvalue("55", "02");
            if (datapath.isEmpty())
            {
                FCOMMON.Util.MsgE("견적서 기본폴더 공용코드 55-02 값을 입력하세요");
                return;
            }
            string path = System.IO.Path.Combine(datapath, DateTime.Now.Year.ToString("0000") + "년");// "\\\\k4fs3201n\\ee1t$\\1. 장비기술1파트\\24_Project & Overhaul 예산 사용 실적\\구매 견적서\\" + DateTime.Now.Year.ToString("0000") + "년";
            if (System.IO.Directory.Exists(path) == false)
                FCOMMON.Util.RunExplorer(datapath);
            else
                FCOMMON.Util.RunExplorer(path);
        }

        private void tbDolloerPrice_TextChanged(object sender, EventArgs e)
        {
            //단가에 금액이 없는경우에는 환율을 곱해준다.
            // if (decimal.TryParse(tbPumPrice.Text, out decimal result) == false || result == 0)
            if (binit)
            {
                if (decimal.TryParse(tbPumPriceD.Text.Replace(",", ""), out decimal priced) == true)
                {
                    applyDollerToWon();
                }
                else
                {
                    //달러입력값도 이상하니 처리 못함
                    tbPumPrice.Text = "0";
                }
            }

        }

        void applyDollerToWon()
        {
            if (decimal.TryParse(tbPumPriceD.Text.Replace(",", ""), out decimal priced))
            {
                var curr = lbcurrentwon.Tag != null ? (float)lbcurrentwon.Tag : 0;
                var price = curr * (double)priced;
                tbPumPrice.Text = (Math.Ceiling(price)).ToString();
            }
            else tbPumPrice.Text = "0";
        }

        private void btSIDChk_Click(object sender, EventArgs e)
        {
            var sid = tbSID.Text.Trim();

            if (sid.Equals("신규") || sid.isEmpty())
            {
                Util.MsgI($"신규SID는 검사를 진행하지 않습니다");
                return;
            }


            if (sid.Length != 9)
            {
                FCOMMON.Util.MsgE("검색 할 SID를 입력하세요");
                tbSID.Focus();
                tbSID.SelectAll();
                return;
            }

            var dt = AmkorRestfulService.SPMSIDSearch(sid);
            if (dt.Complete)
            {
                var f = new FCM0000.fSIDListSelect(sid, dt.Result);
                if (f.ShowDialog() == DialogResult.OK)
                {
                    dr.chk1 = true;
                    this.sidchk1 = sid;
                }
                else
                {
                    Util.MsgE("목록표시 창에서 '확인' 버튼을 눌러야 SID검색이 완료됩니다.");
                }
            }
            else
            {
                Util.MsgI("SPM/NR 에서 검색된 정보가 없습니다\n저장이 가능 합니다");
                dr.chk1 = true; 
                this.sidchk1 = sid;
            }

        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (tbSID.TextLength != 9)
            {
                if (tbSID.Text.Equals("신규") || tbSID.Text.isEmpty())
                {
                    btSIDChk.BackColor = Color.Gray;
                }
                else
                {
                    if (btSIDChk.BackColor == Color.Gray)
                        btSIDChk.BackColor = Color.Tomato;
                    else
                        btSIDChk.BackColor = Color.Gray;
                }
            }
            else
            {
                if (string.IsNullOrWhiteSpace(sidchk1))
                {
                    if (btSIDChk.BackColor == Color.Lime)
                        btSIDChk.BackColor = Color.White;
                    else
                        btSIDChk.BackColor = Color.Lime;
                }
                else btSIDChk.BackColor = SystemColors.Control;
            }

        }

        private void processLabel_Click(object sender, EventArgs e)
        {
            //var f = new FCM0000.fCode("09");
            //var dlg = f.ShowDialog();
            //if (dlg == DialogResult.OK)
            //{
            //    //장비기술공정
            //    var dt = FCOMMON.DBM.getCodeTable("09");
            //    this.cbProcess.DataSource = dt;
            //    cbProcess.Text = f.SelectedTitle;// cbProcess.SelectedIndex = -1;
            //}
        }

        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }

        private void btProcess_Click(object sender, EventArgs e)
        {
            var bt = sender as Button;
            var guun = bt.Tag.ToString();
            var f = new FCM0000.fCode(guun);
            var dlg = f.ShowDialog();
            if (dlg == DialogResult.OK)
            {
                //장비기술공정;
                bt.Text = f.SelectedTitle;// cbProcess.SelectedIndex = -1;
            }
        }

        private void tbSC_TextChanged(object sender, EventArgs e)
        {

        }



        private void cbEQModel_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void cbEQManu_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void button8_Click_1(object sender, EventArgs e)
        {
            if (btEQManu.Text.isEmpty())
            {
                Util.MsgE("장비 제조사가 선택되지 않았습니다");
                btEQManu.Focus();
                return;
            }

            string filter = "svalue='" + btEQManu.Text.Replace("'", "''") + "'";

            var bt = sender as Button;
            var guun = bt.Tag.ToString();
            var f = new FCM0000.fCode(guun, filter);
            var dlg = f.ShowDialog();
            if (dlg == DialogResult.OK)
            {
                //장비기술공정;
                bt.Text = f.SelectedTitle;// cbProcess.SelectedIndex = -1;
            }
        }

        private void tbCostCenter_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (tbCostCenter.SelectedIndex < 0) return;
            //선택된 개체의 Svalue 값이 있따면 그것을 라인코드에 넣는다.
            var selvalue = tbCostCenter.SelectedItem as DataRowView;
            var svalue = selvalue["SValue"];
            if (svalue != null)
            {
                if (tbLineCode.Text.isEmpty()) tbLineCode.Text = svalue.ToString();
            }

        }

        private void chkprdate_CheckedChanged(object sender, EventArgs e)
        {
            this.dtPrdate.Enabled = chkprdate.Checked;
        }

        private void tbSID_TextChanged(object sender, EventArgs e)
        {
            var tb = sender as TextBox;
            var bgcolor = tb.Text == "신규" ? Color.Yellow : Color.Gainsboro;
            btEQManu.BackColor = bgcolor;
            btEQModel.BackColor = bgcolor;
            btManuProc.BackColor = bgcolor;
        }

        private void tbPumIDX_Click(object sender, EventArgs e)
        {
            if (int.TryParse(tbPumIDX.Text, out int pumidx) == false)
            {
                FCOMMON.Util.MsgE("품번호가 정확하지 않습니다\n품목을 다시 선택하세요");
                return;
            }
            if (pumidx < 0)
            {
                FCOMMON.Util.MsgE("품번호가 정확하지 않습니다\n품목을 다시 선택하세요");
                return;
            }
            var f = new FCM0000.Item.fItemEdit(pumidx);
            if (f.ShowDialog() != DialogResult.OK) return;

            tbPumName.Text = f.tbName.Text;
            tbPumModel.Text = f.tbModel.Text;
            tbPumPrice.Text = f.tbPrice.Text;
            tbPumPriceD.Text = f.tbPriceD.Text;
            tbSupply.Text = f.tbSupply.Text;
            tbSupplyIndex.Text = f.tbSupplyIdx.Text;
            tbSID.Text = f.tbSid.Text;
        }

        private void cmbCurrency_SelectedIndexChanged(object sender, EventArgs e)
        {

            if (cmbCurrency.SelectedIndex >= 0)
            {
                var val = cmbCurrency.SelectedValue.ToString();
                var dt = cmbCurrency.DataSource as DataTable;
                var v = dt.AsEnumerable().Where(t => t.Field<String>("Value") == val).FirstOrDefault();
                if (v != null)
                {
                    var price = v.Field<float>("FValue");
                    lbcurrentwon.Text = $"환율:{price}원";
                    lbcurrentwon.Tag = price;
                    //if (binit)
                    //{

                    //    if (decimal.TryParse(tbPumPriceD.Text,out decimal priced))
                    //    {
                    //        if (priced > 0)
                    //            dr.pumamt = priced * (decimal)price;
                    //    }


                    //}
                }
                else
                {
                    lbcurrentwon.Text = $"환율이 입력되지 않았습니다";
                    lbcurrentwon.Tag = 0;
                }
            }
            else
            {
                lbcurrentwon.Text = "통화기호를 선택하세요";
                lbcurrentwon.Tag = 0;
            }
        }

        private void lbcurrentwon_Click(object sender, EventArgs e)
        {
            FCOMMON.Util.MsgI("환율을 입력하려면 공용코드(68)의 Fvalue 에 값을 입력하세요");
        }

        private void tbManager_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void tbPO_Validated(object sender, EventArgs e)
        {
            var txt = tbPO.Text.Trim();
            if (txt.Length > 1)
            {
                if (cmbState.Text == "PR")
                {
                    //if (cmbState.Items.Contains("PO"))
                        cmbState.Text = "PO";
                }
            }
        }
    }
}
