Beispiel #1
0
 public ActionResult Adddetail(string ma_phieu_header, List <StatementDetail> details)
 {
     using (var dbConn = Helpers.OrmliteConnection.openConn())
     {
         try
         {
             if (accessDetail.sua)
             {
                 foreach (var item in details)
                 {
                     StatementDetail newdata = new StatementDetail();
                     newdata.ma_phieu_header           = ma_phieu_header;
                     newdata.ma_san_pham               = item.ma_san_pham;
                     newdata.so_luong                  = item.so_luong;
                     newdata.thong_so_ky_thuat         = item.thong_so_ky_thuat;
                     newdata.muc_dich_su_dung          = "";
                     newdata.nguoi_tao                 = currentUser.ma_nguoi_dung;
                     newdata.ma_pyc_header             = item.ma_pyc_header;
                     newdata.ma_nha_cung_cap           = item.ma_nha_cung_cap;
                     newdata.don_gia_vat               = item.don_gia_vat;
                     newdata.don_gia                   = item.don_gia;
                     newdata.thue_vat                  = item.thue_vat;
                     newdata.don_vi_tinh               = item.don_vi_tinh;
                     newdata.ma_chinh_sach_gia         = item.ma_chinh_sach_gia;
                     newdata.ma_don_vi                 = item.ma_don_vi;
                     newdata.ngay_tao                  = DateTime.Now;
                     newdata.ngay_cap_nhat             = DateTime.Parse("1900-01-01");
                     newdata.nguoi_cap_nhat            = "";
                     newdata.trang_thai                = "";
                     newdata.noi_dung_xac_nhan_ton_kho = item.noi_dung_xac_nhan_ton_kho;
                     newdata.noi_dung_xac_nhan_cap_3   = item.noi_dung_xac_nhan_cap_3;
                     newdata.ma_chi_nhanh              = item.ma_chi_nhanh;
                     dbConn.Insert <StatementDetail>(newdata);
                     //PRequestDetail detail = dbConn.FirstOrDefault<PRequestDetail>(s => s.ma_phieu_header == item.ma_pyc_header && s.ma_san_pham == item.ma_san_pham && s.ma_nha_cung_cap == item.ma_nha_cung_cap);
                     PRequestDetail detail = dbConn.FirstOrDefault <PRequestDetail>(s => s.id == item.id);
                     detail.ma_to_trinh = ma_phieu_header;
                     dbConn.Update(detail);
                 }
             }
             else
             {
                 return(Json(new { success = false, error = "Bạn không có quyền sửa dữ liệu" }));
             }
             return(Json(new { success = true, ma_phieu_header = ma_phieu_header }));
         }
         catch (Exception ex)
         {
             return(Json(new { success = false, error = ex.Message }));
         }
     }
 }
Beispiel #2
0
        public ActionResult CreateUpdate(POHeader data, List <PODetail> details)
        {
            using (var dbConn = Helpers.OrmliteConnection.openConn())
            {
                try
                {
                    int id = 0;
                    if (accessDetail.them)
                    {
                        string ma_phieu = "";
                        var    loai     = "PO";
                        //var ma_don_vi = currentUser.ma_don_vi;
                        var yyMMdd    = DateTime.Now.ToString("yyMMdd");
                        var existLast = dbConn.SingleOrDefault <POHeader>("SELECT TOP 1 * FROM POHeader ORDER BY id DESC");
                        var nextNo    = 0;
                        var yearNow   = int.Parse(DateTime.Now.Year.ToString().Substring(2, 2));
                        if (existLast != null)
                        {
                            nextNo = int.Parse(existLast.ma_phieu.Substring(8, existLast.ma_phieu.Length - 8)) + 1;
                            var yearOld = int.Parse(existLast.ma_phieu.Substring(2, 2));
                            if (yearOld == yearNow)
                            {
                                ma_phieu = loai + yyMMdd + String.Format("{0:00000}", nextNo);
                            }
                            else
                            {
                                ma_phieu = loai + yyMMdd + "00001";
                            }
                        }
                        else
                        {
                            ma_phieu = loai + yyMMdd + "00001";
                        }

                        data.ma_phieu = ma_phieu;
                        //data.ngay_tao_yeu_cau = !string.IsNullOrEmpty(Request["ngay_tao_yeu_cau"]) ? DateTime.Parse(DateTime.ParseExact(Request["ngay_tao_yeu_cau"], "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd")) : DateTime.Parse("1900-01-01");
                        //data.ngay_cap_thiet_bi = !string.IsNullOrEmpty(Request["ngay_cap_thiet_bi"]) ? DateTime.Parse(DateTime.ParseExact(Request["ngay_cap_thiet_bi"], "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd")) : DateTime.Parse("1900-01-01");
                        //data.ten_phieu = data.ma_phieu;
                        data.ngay_tao       = DateTime.Now;
                        data.nguoi_tao      = currentUser.ma_nguoi_dung;
                        data.ngay_cap_nhat  = DateTime.Parse("1900-01-01");
                        data.nguoi_cap_nhat = "";
                        data.trang_thai     = "MOI";
                        dbConn.Insert(data);
                        id = (int)dbConn.GetLastInsertId();


                        foreach (var item in details)
                        {
                            PODetail newdata = new PODetail();
                            newdata.ma_phieu_header    = data.ma_phieu;
                            newdata.ma_san_pham        = item.ma_san_pham;
                            newdata.so_luong           = item.so_luong;
                            newdata.thong_so_ky_thuat  = item.thong_so_ky_thuat;
                            newdata.muc_dich_su_dung   = "";
                            newdata.nguoi_tao          = currentUser.ma_nguoi_dung;
                            newdata.ma_to_trinh        = item.ma_to_trinh;
                            newdata.id_StatementDetail = item.id_StatementDetail;
                            newdata.don_gia_vat        = item.don_gia_vat;
                            newdata.don_gia            = item.don_gia;
                            newdata.thue_vat           = item.thue_vat;
                            newdata.don_vi_tinh        = item.don_vi_tinh;
                            newdata.chi_phi            = item.chi_phi;
                            newdata.ma_don_vi          = item.ma_don_vi;
                            newdata.ma_chi_nhanh       = item.ma_chi_nhanh;
                            newdata.thong_tin_noi_bo   = item.thong_tin_noi_bo;
                            newdata.ngay_tao           = DateTime.Now;
                            newdata.ngay_cap_nhat      = DateTime.Parse("1900-01-01");
                            newdata.nguoi_cap_nhat     = "";
                            newdata.trang_thai         = "";
                            dbConn.Insert <PODetail>(newdata);
                            StatementDetail detail = dbConn.FirstOrDefault <StatementDetail>(s => s.id == item.id_StatementDetail);
                            detail.ma_don_dat_hang = ma_phieu;
                            dbConn.Update(detail);
                        }
                    }
                    else
                    {
                        return(Json(new { success = false, error = "Bạn không có quyền thêm dữ liệu" }));
                    }
                    return(Json(new { success = true, id = id }));
                }
                catch (Exception ex)
                {
                    return(Json(new { success = false, error = ex.Message }));
                }
            }
        }
        private void btnUpdate_Click(object sender, EventArgs e)
        {
            Statement statement = new Statement();

            statement.writeDate   = "20150312";         //필수, 기재상 작성일자 (yyyyMMdd)
            statement.purposeType = "영수";               //필수, {영수, 청구}
            statement.taxType     = "과세";               //필수, {과세, 영세, 면세}
            statement.formCode    = txtFormCode.Text;   //맞춤양식코드, 기본값을 공백('')으로 처리하면 기본양식으로 처리.

            statement.itemCode = selectedItemCode();    //명세서코드

            statement.mgtKey = txtMgtKey.Text;          //문서관리번호

            statement.senderCorpNum       = txtCorpNum.Text;
            statement.senderTaxRegID      = "";           //종사업자 식별번호. 필요시 기재. 형식은 숫자 4자리.
            statement.senderCorpName      = "공급자 상호_수정";
            statement.senderCEOName       = "공급자 대표자 성명_수정";
            statement.senderAddr          = "공급자 주소";
            statement.senderBizClass      = "공급자 업종";
            statement.senderBizType       = "공급자 업태,업태2";
            statement.senderContactName   = "공급자 담당자명";
            statement.senderEmail         = "*****@*****.**";
            statement.senderTEL           = "070-7070-0707";
            statement.senderHP            = "010-000-2222";
            statement.receiverCorpNum     = "8888888888";
            statement.receiverCorpName    = "공급받는자 상호";
            statement.receiverCEOName     = "공급받는자 대표자 성명";
            statement.receiverAddr        = "공급받는자 주소";
            statement.receiverBizClass    = "공급받는자 업종";
            statement.receiverBizType     = "공급받는자 업태";
            statement.receiverContactName = "공급받는자 담당자명";
            statement.receiverEmail       = "*****@*****.**";

            statement.supplyCostTotal = "200000";        //필수 공급가액 합계
            statement.taxTotal        = "20000";         //필수 세액 합계
            statement.totalAmount     = "220000";        //필수 합계금액.  공급가액 + 세액

            statement.serialNum = "123";                 //기재상 일련번호 항목
            statement.remark1   = "비고1";
            statement.remark2   = "비고2";
            statement.remark3   = "비고3";

            statement.businessLicenseYN = false; //사업자등록증 이미지 첨부시 설정.
            statement.bankBookYN        = false; //통장사본 이미지 첨부시 설정.

            statement.detailList = new List <StatementDetail>();

            StatementDetail detail = new StatementDetail();

            detail.serialNum  = 1;                                  //일련번호, 1~99까지 순차기재
            detail.purchaseDT = "20150309";                         //거래일자
            detail.itemName   = "품목명";
            detail.spec       = "규격";
            detail.qty        = "1";                                //수량
            detail.unitCost   = "100000";                           //단가
            detail.supplyCost = "100000";                           //공급가액
            detail.tax        = "10000";                            //세액
            detail.remark     = "품목비고";
            detail.spare1     = "spare1";
            detail.spare1     = "spare2";
            detail.spare1     = "spare3";
            detail.spare1     = "spare4";
            detail.spare1     = "spare5";

            statement.detailList.Add(detail);

            detail = new StatementDetail();

            detail.serialNum  = 2;                                  //일련번호, 1~99까지 순차기재
            detail.purchaseDT = "20150309";                         //거래일자
            detail.itemName   = "품목명";
            detail.spec       = "규격";
            detail.qty        = "1";                                //수량
            detail.unitCost   = "100000";                           //단가
            detail.supplyCost = "100000";                           //공급가액
            detail.tax        = "10000";                            //세액
            detail.remark     = "품목비고";
            detail.spare1     = "spare1";
            detail.spare1     = "spare2";
            detail.spare1     = "spare3";
            detail.spare1     = "spare4";
            detail.spare1     = "spare5";

            statement.detailList.Add(detail);
            statement.propertyBag = new Dictionary <string, string>();

            statement.propertyBag.Add("Balance", "15000");

            try
            {
                Response response = statementService.Update(txtCorpNum.Text, selectedItemCode(), txtMgtKey.Text, statement, txtUserID.Text);

                MessageBox.Show(response.code + " | " + response.message);
            }
            catch (PopbillException ex)
            {
                MessageBox.Show(ex.code.ToString() + " | " + ex.Message);
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            /**
             * "임시저장" 상태의 전자명세서를 수정합니다.
             * - https://docs.popbill.com/statement/dotnet/api#Update
             */

            // 팝빌회원 사업자번호, '-' 제외 10자리
            String testCorpNum = "1234567890";

            // 팝빌회원 아이디
            String testUserID = "testkorea";

            // 맞춤양식코드, 미기재시 기본양식으로 처리
            String formCode = "";

            // 명세서 코드 - 121(거래명세서), 122(청구서), 123(견적서), 124(발주서), 125(입금표), 126(영수증)
            int itemCode = 121;

            // 전자명세서 문서번호
            String mgtKey = "20220525-002";


            // 전자명세서 객체
            Statement statement = new Statement();

            // 기재상 작성일자 날짜형식(yyyyMMdd)
            statement.writeDate = "20220525";

            // {영수, 청구, 없음} 중 기재
            statement.purposeType = "영수";

            // 과세형태, {과세, 영세, 면세} 중 기재
            statement.taxType = "과세";

            // 맞춤양식코드, 기본값을 공백('')으로 처리하면 기본양식으로 처리.
            statement.formCode = formCode;

            // 명세서 코드
            statement.itemCode = itemCode;

            // 문서번호, 최대 24자리, 영문, 숫자 '-', '_'를 조합하여 사업자별로 중복되지 않도록 구성
            statement.mgtKey = mgtKey;


            /**************************************************************************
            *                          발신자 정보                                   *
            **************************************************************************/

            // 발신자 사업자번호
            statement.senderCorpNum = testCorpNum;

            // 종사업장 식별번호. 필요시 기재. 형식은 숫자 4자리.
            statement.senderTaxRegID = "";

            // 발신자 상호
            statement.senderCorpName = "발신자 상호_수정";

            // 발신자 대표자 성명
            statement.senderCEOName = "발신자 대표자 성명_수정";

            // 발신자 주소
            statement.senderAddr = "발신자 주소";

            // 발신자 종목
            statement.senderBizClass = "발신자 종목";

            // 발신자 업태
            statement.senderBizType = "발신자 업태,업태2";

            // 발신자 담당자 성명
            statement.senderContactName = "발신자 담당자명";

            // 발신자 메일주소
            statement.senderEmail = "";

            // 발신자 연락처
            statement.senderTEL = "";

            // 발신자 휴대폰번호
            statement.senderHP = "";


            /**************************************************************************
            *                             수신자 정보                                *
            **************************************************************************/

            // 수신자 사업자번호
            statement.receiverCorpNum = "8888888888";

            // 수신자 상호
            statement.receiverCorpName = "수신자 상호";

            // 수신자 대표자 성명
            statement.receiverCEOName = "수신자 대표자 성명";

            // 수신자 주소
            statement.receiverAddr = "수신자 주소";

            // 수신자 종목
            statement.receiverBizClass = "수신자 종목";

            // 수신자 업태
            statement.receiverBizType = "수신자 업태";

            // 수신자 담당자 성명
            statement.receiverContactName = "수신자 담당자명";

            // 수신자 메일주소
            // 팝빌 개발환경에서 테스트하는 경우에도 안내 메일이 전송되므로,
            // 실제 거래처의 메일주소가 기재되지 않도록 주의
            statement.receiverEmail = "";

            /**************************************************************************
            *                         전자명세서 기재항목                            *
            **************************************************************************/

            // 공급가액 합계
            statement.supplyCostTotal = "200000";

            // 세액 합계
            statement.taxTotal = "20000";

            // 합계금액
            statement.totalAmount = "220000";

            // 기재상 일련번호 항목
            statement.serialNum = "123";

            // 기재상 비고 항목
            statement.remark1 = "비고1";
            statement.remark2 = "비고2";
            statement.remark3 = "비고3";

            // 사업자등록증 이미지 첨부여부 (true / false 중 택 1)
            // └ true = 첨부 , false = 미첨부(기본값)
            // - 팝빌 사이트 또는 인감 및 첨부문서 등록 팝업 URL (GetSealURL API) 함수를 이용하여 등록
            statement.businessLicenseYN = false;

            // 통장사본 이미지 첨부여부 (true / false 중 택 1)
            // └ true = 첨부 , false = 미첨부(기본값)
            // - 팝빌 사이트 또는 인감 및 첨부문서 등록 팝업 URL (GetSealURL API) 함수를 이용하여 등록
            statement.bankBookYN = false;

            statement.detailList = new List <StatementDetail>();

            StatementDetail detail = new StatementDetail();

            detail.serialNum  = 1;          // 일련번호, 1부터 순차기재, 최대 99
            detail.purchaseDT = "20220525"; // 거래일자
            detail.itemName   = "품목명";      // 품목명
            detail.spec       = "규격";       // 규격
            detail.qty        = "1";        // 수량
            detail.unitCost   = "100000";   // 단가
            detail.supplyCost = "100000";   // 공급가액
            detail.tax        = "10000";    // 세액
            detail.remark     = "품목비고";     // 비고
            detail.spare1     = "spare1";   //여분1
            detail.spare1     = "spare2";   //여분2
            detail.spare1     = "spare3";   //여분3
            detail.spare1     = "spare4";   //여분4
            detail.spare1     = "spare5";   //여분5

            statement.detailList.Add(detail);

            detail = new StatementDetail();

            detail.serialNum  = 2;          // 일련번호, 1부터 순차기재, 최대 99
            detail.purchaseDT = "20220525"; // 거래일자
            detail.itemName   = "품목명";      // 품목명
            detail.spec       = "규격";       // 규격
            detail.qty        = "1";        // 수량
            detail.unitCost   = "100000";   // 단가
            detail.supplyCost = "100000";   // 공급가액
            detail.tax        = "10000";    // 세액
            detail.remark     = "품목비고";     // 비고
            detail.spare1     = "spare1";   //여분1
            detail.spare1     = "spare2";   //여분2
            detail.spare1     = "spare3";   //여분3
            detail.spare1     = "spare4";   //여분4
            detail.spare1     = "spare5";   //여분5

            statement.detailList.Add(detail);


            /************************************************************
            * 전자명세서 추가속성
            * - 추가속성에 관한 자세한 사항은 "[전자명세서 API 연동매뉴얼] >
            *   5.2. 기본양식 추가속성 테이블"을 참조하시기 바랍니다.
            * - https://docs.popbill.com/statement/propertyBag?lang=dotnet
            ************************************************************/
            statement.propertyBag = new propertyBag();

            statement.propertyBag.Add("Balance", "15000");  // 전잔액
            statement.propertyBag.Add("Deposit", "5000");   // 입금액
            statement.propertyBag.Add("CBalance", "20000"); // 현잔액


            try
            {
                Response response =
                    Global.statementService.Update(testCorpNum, itemCode, mgtKey, statement, testUserID);

                code    = response.code.ToString();
                message = response.message;
            }
            catch (PopbillException ex)
            {
                code    = ex.code.ToString();
                message = ex.Message;
            }
        }