using ICSSoft.Common;
using ICSSoft.Entity;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ICSSoft.DataProject
{
    /// <summary>
    /// 委外采购退货单
    /// </summary>
    public  class OutsourcingReturnBack
    {
       private static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        private static string connString = System.Configuration.ConfigurationManager.AppSettings["ERPConnStr"];
        private static string ERPDB = System.Configuration.ConfigurationManager.AppSettings["ERPDB"];
        private static string Type = System.Configuration.ConfigurationManager.AppSettings["Type"];
        public string Get(List<ICSOutsourcingReturnBack> infos)
      {

          List<ICSOutsourcingReturnBack> szJson = new List<ICSOutsourcingReturnBack>();
          DataTable dt = null;
          string json = "";
          if (infos.Count <= 0)
          {
              throw new Exception("传送数据为空!");
          }
          string res = string.Empty;
          SqlConnection conn = new System.Data.SqlClient.SqlConnection(connString);
          conn.Open();
          SqlTransaction sqlTran = conn.BeginTransaction();
          SqlCommand cmd = new SqlCommand();
          cmd.Transaction = sqlTran;
          cmd.Connection = conn;
          try
          {
              string sql = string.Empty;
              foreach (ICSOutsourcingReturnBack info in infos)
              {
                  if (info.MTime < new DateTime(2000, 01, 01))
                      throw new Exception("请输入正确的操作时间:" + info.MTime);
                  sql = @" 	 SELECT iBillType,A.ID,A.cCode,A.cVenCode,D.cVenName,C.CDEPNAME,A.cDepCode,C.cDepName,A.cpocode,A.cMaker,A.cMakeTime,A.cverifier,A.caudittime,
                             B.Autoid,B.irowno ,B.cInvCode ,B.INUM,B.iQuantity,B.fValidInQuan,B.iPOsID
                             FROM  PU_ArrivalVouch A
                             INNER JOIN PU_ArrivalVouchs B ON A.ID=B.ID
                             INNER JOIN DEPARTMENT C ON A.CDEPCODE=C.CDEPCODE
                             INNER JOIN VENDOR D ON A.CVENCODE=D.CVENCODE WHERE 1=1 and  iQuantity<0 and A.cBusType='委外加工'";
                  if (!string.IsNullOrWhiteSpace(info.ODNRTCode))
                  {
                      sql += " and a.cCode='{0}'";
                  }
                  if (!string.IsNullOrWhiteSpace(info.MTime.ToString()))
                  {
                      sql += " and ISNULL(a.cModifyTime,ISNULL(a.cAuditTime, ISNULL(a.cModifyTime, a.cmaketime)))>='{1}'";
                  }
                  if (!string.IsNullOrWhiteSpace(info.User))
                  {
                      sql += "and a.CMAKER='{2}'";
                  }
                  sql = string.Format(sql, info.ODNRTCode, info.MTime, info.User);
                  dt = DBHelper.SQlReturnData(sql, cmd);
                  if (dt.Rows.Count <= 0 || dt == null)
                      throw new Exception("委外采购退货单:" + info.ODNRTCode + ",无信息!");
                  json = JsonConvert.SerializeObject(dt);
              }
              cmd.Transaction.Commit();
              return json;
          }
          catch (Exception ex)
          {
              cmd.Transaction.Rollback();
              log.Error(ex.Message);
              throw new Exception(ex.Message);
          }
          finally
          {
              if (conn.State == ConnectionState.Open)
              {
                  conn.Close();
              }
              conn.Dispose();
          }
      }
    }
}