Ejemplo n.º 1
0
def execute(masterForm):
    ofg = System.Windows.Forms.OpenFileDialog()
    ofg.RestoreDirectory = True
    ofg.Filter = "所有 Excel 文件|*.xls;*.xlsx;*.xml|Excel 97-2003 文件|*.xls|Excel 2007 文件|*.xlsx|XML 文件|*.xml"
    if (ofg.ShowDialog() == System.Windows.Forms.DialogResult.OK):
        try:
            dts = Feng.Utils.ExcelHelper.ReadExcel(ofg.FileName)
            if (dts.Count == 0):
                raise Feng.InvalidUserOperationException("Excel中无数据!")
            dt = dts[0]
            if (not dt.Columns.Contains("提单编号") or not dt.Columns.Contains("箱号") or not dt.Columns.Contains("费用类型") \
                or not dt.Columns.Contains("免费天数") or not dt.Columns.Contains("币种") or not dt.Columns.Contains("实际金额")):
                raise Feng.InvalidUserOperationException(
                    "文件中必须要有提单编号、箱号、费用类型、币种、实际金额栏,请查证!")
            errorDt = dt.Clone()
            db = Feng.Data.DbHelper.Instance.CreateDatabase(
                "DataConnectionString")
            tran = db.BeginTransaction()
            count = 0
            try:
                for row in dt.Rows:
                    fyx = ''
                    je = 0
                    if (row["费用类型"].ToString() == "XXF"): fyx = "165"
                    elif (row["费用类型"].ToString() == "ZX"): fyx = "167"
                    else:
                        raise Feng.InvalidUserOperationException(
                            "费用类型不能是" + row["费用类型"].ToString() + "!")
                    if (row["币种"].ToString() == "RMB"):
                        je = Feng.Utils.ConvertHelper.ToDecimal(row["实际金额"])
                    elif (row["币种"].ToString() == "USD"):
                        je = 7 * Feng.Utils.ConvertHelper.ToDecimal(
                            row["实际金额"])
                    else:
                        raise Feng.InvalidUserOperationException(
                            "币种不能是" + row["币种"].ToString() + "!")
                    db.ExecuteNonQuery("insert Temp_对账单费用查验(相关人,提单号,箱号,费用项,金额) values ('900010','" + str(row["提单编号"]) + "','" \
                                       + str(row["箱号"]) + "','" + str(fyx) + "'," + str(je) + ")")
                    count = count + 1
                db.CommitTransaction(tran)
                Feng.MessageForm.ShowInfo("已导入" + str(count) + "条数据!")
            except System.Exception, ex:
                db.RollbackTransaction(tran)
                errorDt.ImportRow(row)
                Feng.ServiceProvider.GetService[
                    Feng.IExceptionProcess]().ProcessWithNotify(
                        System.Exception('提单号' + row["提单编号"] + '数据有问题,请查证!',
                                         ex))
            if (errorDt.Rows.Count > 0):
                errorFileName =  System.IO.Path.GetDirectoryName(ofg.FileName) + '\\' + \
                                System.IO.Path.GetFileName(System.IO.Path.ChangeExtension(System.IO.Path.GetTempFileName(), ".xml"))
                Feng.Utils.ExcelXmlHelper.WriteExcelXml(
                    errorDt, errorFileName)
                Feng.MessageForm.ShowInfo("请查看错误文件" + errorFileName)
        except System.Exception, ex:
            Feng.ServiceProvider.GetService[
                Feng.IExceptionProcess]().ProcessWithNotify(ex)
Ejemplo n.º 2
0
    def testException(self, mapper, _):
        self.assertEquals(mapper.LastException, None,
                          "exception should default to nothing")

        mapper.LastException = System.Exception("doozy")
        self.assertEquals(type(mapper.LastException), Exception,
                          "get should retrieve last set exception")
        self.assertEquals(str(mapper.LastException), "doozy",
                          "get should retrieve last set exception")
def execute(masterForm):
    ofg = System.Windows.Forms.OpenFileDialog()
    ofg.RestoreDirectory = True
    ofg.Filter = "所有 Excel 文件|*.xls;*.xlsx;*.xml|Excel 97-2003 文件|*.xls|Excel 2007 文件|*.xlsx|XML 文件|*.xml"
    if (ofg.ShowDialog() == System.Windows.Forms.DialogResult.OK):
        try:
            dts = Feng.Utils.ExcelHelper.ReadExcel(ofg.FileName)
            if (dts.Count == 0):
                raise Feng.InvalidUserOperationException("Excel中无数据!")
            dt = dts[0]
            if (dt.Columns.Count != 17):
                raise Feng.InvalidUserOperationException("文件栏目格式不符,请查证!")
            errorDt = dt.Clone()
            db = Feng.Data.DbHelper.Instance.CreateDatabase(
                "DataConnectionString")
            tran = db.BeginTransaction()
            count = 0
            try:
                for row in dt.Rows:
                    fyxs = ('161')
                    for i in range(0, 1, 1):
                        fyx = ''
                        je = 0
                        je = Feng.Utils.ConvertHelper.ToDecimal(row[13])
                        if (je == None):
                            continue
                        fyx = fyxs[i]
                        db.ExecuteNonQuery("insert Temp_对账单费用查验(相关人,提单号,箱号,费用项,金额) values ('900003','" + str(row[4]) + "','" \
                                           + str(row[1]) + "','" + str(fyx) + "'," + str(je) + ")")
                        count = count + 1
                db.CommitTransaction(tran)
                Feng.MessageForm.ShowInfo("已导入" + str(count) + "条数据!")
            except System.Exception, ex:
                db.RollbackTransaction(tran)
                errorDt.ImportRow(row)
                Feng.ServiceProvider.GetService[
                    Feng.IExceptionProcess]().ProcessWithNotify(
                        System.Exception('提单号' + row[4] + '数据有问题,请查证!', ex))
            if (errorDt.Rows.Count > 0):
                errorFileName =  System.IO.Path.GetDirectoryName(ofg.FileName) + '\\' + \
                                System.IO.Path.GetFileName(System.IO.Path.ChangeExtension(System.IO.Path.GetTempFileName(), ".xml"))
                Feng.Utils.ExcelXmlHelper.WriteExcelXml(
                    errorDt, errorFileName)
                Feng.MessageForm.ShowInfo("请查看错误文件" + errorFileName)
        except System.Exception, ex:
            Feng.ServiceProvider.GetService[
                Feng.IExceptionProcess]().ProcessWithNotify(ex)
def test_iteration_innerexception():
    from Python.Test import ExceptionTest
    from System import OverflowException

    exception = System.Exception("message", OverflowException("error"))

    val = ExceptionTest.ThrowExceptionInIterator(exception).__iter__()
    assert next(val) == 1
    assert next(val) == 2
    with pytest.raises(OverflowException) as cm:
        next(val)

    exc = cm.value

    assert exc == exception.InnerException

    # after exception is thrown iterator is no longer valid
    with pytest.raises(StopIteration):
        next(val)
def test_managed_exception_conversion():
    """Test conversion of managed exceptions."""
    from System import OverflowException
    from Python.Test import ExceptionTest

    e = ExceptionTest.GetBaseException()
    assert isinstance(e, System.Exception)

    e = ExceptionTest.GetExplicitException()
    assert isinstance(e, OverflowException)
    assert isinstance(e, System.Exception)

    e = ExceptionTest.GetWidenedException()
    assert isinstance(e, OverflowException)
    assert isinstance(e, System.Exception)

    v = ExceptionTest.SetBaseException(System.Exception('error'))
    assert v

    v = ExceptionTest.SetExplicitException(OverflowException('error'))
    assert v

    v = ExceptionTest.SetWidenedException(OverflowException('error'))
    assert v
Ejemplo n.º 6
0
    def test_interop():
        load_iron_python_test()

        from IronPythonTest import ExceptionsTest
        import System
        import sys

        a = ExceptionsTest()

        try:
            a.ThrowException()  # throws index out of range
        except IndexError as e:
            Assert(e.__class__ == IndexError)

        class MyTest(ExceptionsTest):
            def VirtualFunc(self):
                raise ex("hello world")

        ex = ValueError

        a = MyTest()

        # raise in python, translate into .NET, catch in Python
        try:
            a.CallVirtual()
        except ex as e:
            Assert(e.__class__ == ValueError)
            Assert(e.args[0] == "hello world")

        # raise in python, catch in .NET, verify .NET got an ArgumentException

        try:
            x = a.CallVirtCatch()
        except ex as e:
            Assert(False)

        Assert(isinstance(x, System.ArgumentException))

        # call through the slow paths...

        try:
            a.CallVirtualOverloaded('abc')
        except ex as e:
            Assert(e.__class__ == ex)
            Assert(e.args[0] == "hello world")
        # Note that sys.exc_info() is still set

        try:
            a.CallVirtualOverloaded(5)
        except ex as e:
            Assert(e.__class__ == ex)
            Assert(e.args[0] == "hello world")

        try:
            a.CallVirtualOverloaded(a)
        except ex as e:
            Assert(e.__class__ == ex)
            Assert(e.args[0] == "hello world")

        # catch and re-throw (both throw again and rethrow)

        try:
            a.CatchAndRethrow()
        except ex as e:
            Assert(e.__class__ == ex)
            Assert(e.args[0] == "hello world")

        try:
            a.CatchAndRethrow2()
        except ex as e:
            Assert(e.__class__ == ex)
            Assert(e.args[0] == "hello world")

        class MyTest(ExceptionsTest):
            def VirtualFunc(self):
                self.ThrowException()

        a = MyTest()

        # start in python, call CLS which calls Python which calls CLS which raises the exception
        try:
            a.CallVirtual()  # throws index out of range
        except IndexError as e:
            Assert(e.__class__ == IndexError)

        # verify we can throw arbitrary classes
        class MyClass:
            pass

        try:
            raise MyClass
            Assert(False)
        except MyClass as mc:
            Assert(mc.__class__ == MyClass)

        # BUG 430 intern(None) should throw TypeError
        try:
            sys.intern(None)
            Assert(False)
        except TypeError:
            pass
        # /BUG

        # BUG 393 exceptions throw when bad value passed to except
        try:
            try:
                raise SyntaxError("foo")
            except 12:
                Assert(False)
                pass
        except SyntaxError:
            pass
        # /BUG

        # BUG 319 IOError not raised.
        if is_silverlight == False:
            try:
                fp = file('thisfiledoesnotexistatall.txt')
            except IOError:
                pass
        # /BUG

        # verify we can raise & catch CLR exceptions
        try:
            raise System.Exception('Hello World')
        except System.Exception as e:
            Assert(type(e) == System.Exception)

        # BUG 481 Trying to pass raise in Traceback should cause an error until it is implemented
        try:
            raise StopIteration("BadTraceback")("somedata").with_traceback(
                "a string is not a traceback")
            Assert(False, "fell through raise for some reason")
        except StopIteration:
            Assert(False)
        except TypeError:
            pass

        try:
            raise TypeError
        except:
            import sys
            if (sys.exc_info()[2] != None):
                x = dir(sys.exc_info()[2])
                for name in ['tb_frame', 'tb_lasti', 'tb_lineno', 'tb_next']:
                    Assert(name in x, name)
                try:
                    raise Exception("foo")("Msg").with_traceback(
                        sys.exc_info()[2])
                except Exception as X:
                    pass

        try:
            raise Exception(3, 4, 5)
        except Exception as X:
            AreEqual(X[0], 3)
            AreEqual(X[1], 4)
            AreEqual(X[2], 5)

        try:
            raise Exception
        except:
            import exceptions
            AreEqual(sys.exc_info()[0], exceptions.Exception)
            AreEqual(sys.exc_info()[1].__class__, exceptions.Exception)

        try:
            Fail("message")
        except AssertionError as e:
            import exceptions

            AreEqual(e.__class__, exceptions.AssertionError)
            AreEqual(len(e.args), 1)
            AreEqual(e.args[0], "message")
        else:
            Fail("Expected exception")
Ejemplo n.º 7
0
def test_special_array_creation():
    """Test using the Array[<type>] syntax for creating arrays."""
    from Python.Test import ISayHello1, InterfaceTest, ShortEnum
    from System import Array
    inst = InterfaceTest()

    value = Array[System.Boolean]([True, True])
    assert value[0] is True
    assert value[1] is True
    assert value.Length == 2

    value = Array[bool]([True, True])
    assert value[0] is True
    assert value[1] is True
    assert value.Length == 2

    value = Array[System.Byte]([0, 255])
    assert value[0] == 0
    assert value[1] == 255
    assert value.Length == 2

    value = Array[System.SByte]([0, 127])
    assert value[0] == 0
    assert value[1] == 127
    assert value.Length == 2

    value = Array[System.Char]([u'A', u'Z'])
    assert value[0] == u'A'
    assert value[1] == u'Z'
    assert value.Length == 2

    value = Array[System.Char]([0, 65535])
    assert value[0] == chr(0)
    assert value[1] == chr(65535)
    assert value.Length == 2

    value = Array[System.Int16]([0, 32767])
    assert value[0] == 0
    assert value[1] == 32767
    assert value.Length == 2

    value = Array[System.Int32]([0, 2147483647])
    assert value[0] == 0
    assert value[1] == 2147483647
    assert value.Length == 2

    value = Array[int]([0, 2147483647])
    assert value[0] == 0
    assert value[1] == 2147483647
    assert value.Length == 2

    value = Array[System.Int64]([0, 9223372036854775807])
    assert value[0] == 0
    assert value[1] == 9223372036854775807
    assert value.Length == 2

    value = Array[System.UInt16]([0, 65000])
    assert value[0] == 0
    assert value[1] == 65000
    assert value.Length == 2

    value = Array[System.UInt32]([0, 4294967295])
    assert value[0] == 0
    assert value[1] == 4294967295
    assert value.Length == 2

    value = Array[System.UInt64]([0, 18446744073709551615])
    assert value[0] == 0
    assert value[1] == 18446744073709551615
    assert value.Length == 2

    value = Array[System.Single]([0.0, 3.402823e38])
    assert value[0] == 0.0
    assert value[1] == 3.402823e38
    assert value.Length == 2

    value = Array[System.Double]([0.0, 1.7976931348623157e308])
    assert value[0] == 0.0
    assert value[1] == 1.7976931348623157e308
    assert value.Length == 2

    value = Array[float]([0.0, 1.7976931348623157e308])
    assert value[0] == 0.0
    assert value[1] == 1.7976931348623157e308
    assert value.Length == 2

    value = Array[System.Decimal]([System.Decimal.Zero, System.Decimal.One])
    assert value[0] == System.Decimal.Zero
    assert value[1] == System.Decimal.One
    assert value.Length == 2

    value = Array[System.String](["one", "two"])
    assert value[0] == "one"
    assert value[1] == "two"
    assert value.Length == 2

    value = Array[str](["one", "two"])
    assert value[0] == "one"
    assert value[1] == "two"
    assert value.Length == 2

    value = Array[ShortEnum]([ShortEnum.Zero, ShortEnum.One])
    assert value[0] == ShortEnum.Zero
    assert value[1] == ShortEnum.One
    assert value.Length == 2

    value = Array[System.Object]([inst, inst])
    assert value[0].__class__ == inst.__class__
    assert value[1].__class__ == inst.__class__
    assert value.Length == 2

    value = Array[InterfaceTest]([inst, inst])
    assert value[0].__class__ == inst.__class__
    assert value[1].__class__ == inst.__class__
    assert value.Length == 2

    value = Array[ISayHello1]([inst, inst])
    assert value[0].__class__ == inst.__class__
    assert value[1].__class__ == inst.__class__
    assert value.Length == 2

    inst = System.Exception("badness")
    value = Array[System.Exception]([inst, inst])
    assert value[0].__class__ == inst.__class__
    assert value[1].__class__ == inst.__class__
    assert value.Length == 2
Ejemplo n.º 8
0
    def testSpecialArrayCreation(self):
        """Test using the Array[<type>] syntax for creating arrays."""
        from Python.Test import ISayHello1, InterfaceTest, ShortEnum
        from System import Array
        inst = InterfaceTest()

        value = Array[System.Boolean]([True, True])
        self.assertTrue(value[0] == True)
        self.assertTrue(value[1] == True)
        self.assertTrue(value.Length == 2)

        value = Array[bool]([True, True])
        self.assertTrue(value[0] == True)
        self.assertTrue(value[1] == True)
        self.assertTrue(value.Length == 2)

        value = Array[System.Byte]([0, 255])
        self.assertTrue(value[0] == 0)
        self.assertTrue(value[1] == 255)
        self.assertTrue(value.Length == 2)

        value = Array[System.SByte]([0, 127])
        self.assertTrue(value[0] == 0)
        self.assertTrue(value[1] == 127)
        self.assertTrue(value.Length == 2)

        value = Array[System.Char]([six.u('A'), six.u('Z')])
        self.assertTrue(value[0] == six.u('A'))
        self.assertTrue(value[1] == six.u('Z'))
        self.assertTrue(value.Length == 2)

        value = Array[System.Char]([0, 65535])
        self.assertTrue(value[0] == unichr(0))
        self.assertTrue(value[1] == unichr(65535))
        self.assertTrue(value.Length == 2)

        value = Array[System.Int16]([0, 32767])
        self.assertTrue(value[0] == 0)
        self.assertTrue(value[1] == 32767)
        self.assertTrue(value.Length == 2)

        value = Array[System.Int32]([0, 2147483647])
        self.assertTrue(value[0] == 0)
        self.assertTrue(value[1] == 2147483647)
        self.assertTrue(value.Length == 2)

        value = Array[int]([0, 2147483647])
        self.assertTrue(value[0] == 0)
        self.assertTrue(value[1] == 2147483647)
        self.assertTrue(value.Length == 2)

        value = Array[System.Int64]([0, long(9223372036854775807)])
        self.assertTrue(value[0] == 0)
        self.assertTrue(value[1] == long(9223372036854775807))
        self.assertTrue(value.Length == 2)

        # there's no explicit long type in python3, use System.Int64 instead
        if not six.PY3:
            value = Array[long]([0, long(9223372036854775807)])
            self.assertTrue(value[0] == 0)
            self.assertTrue(value[1] == long(9223372036854775807))
            self.assertTrue(value.Length == 2)

        value = Array[System.UInt16]([0, 65000])
        self.assertTrue(value[0] == 0)
        self.assertTrue(value[1] == 65000)
        self.assertTrue(value.Length == 2)

        value = Array[System.UInt32]([0, long(4294967295)])
        self.assertTrue(value[0] == 0)
        self.assertTrue(value[1] == long(4294967295))
        self.assertTrue(value.Length == 2)

        value = Array[System.UInt64]([0, long(18446744073709551615)])
        self.assertTrue(value[0] == 0)
        self.assertTrue(value[1] == long(18446744073709551615))
        self.assertTrue(value.Length == 2)

        value = Array[System.Single]([0.0, 3.402823e38])
        self.assertTrue(value[0] == 0.0)
        self.assertTrue(value[1] == 3.402823e38)
        self.assertTrue(value.Length == 2)

        value = Array[System.Double]([0.0, 1.7976931348623157e308])
        self.assertTrue(value[0] == 0.0)
        self.assertTrue(value[1] == 1.7976931348623157e308)
        self.assertTrue(value.Length == 2)

        value = Array[float]([0.0, 1.7976931348623157e308])
        self.assertTrue(value[0] == 0.0)
        self.assertTrue(value[1] == 1.7976931348623157e308)
        self.assertTrue(value.Length == 2)

        value = Array[System.Decimal](
            [System.Decimal.Zero, System.Decimal.One])
        self.assertTrue(value[0] == System.Decimal.Zero)
        self.assertTrue(value[1] == System.Decimal.One)
        self.assertTrue(value.Length == 2)

        value = Array[System.String](["one", "two"])
        self.assertTrue(value[0] == "one")
        self.assertTrue(value[1] == "two")
        self.assertTrue(value.Length == 2)

        value = Array[str](["one", "two"])
        self.assertTrue(value[0] == "one")
        self.assertTrue(value[1] == "two")
        self.assertTrue(value.Length == 2)

        value = Array[ShortEnum]([ShortEnum.Zero, ShortEnum.One])
        self.assertTrue(value[0] == ShortEnum.Zero)
        self.assertTrue(value[1] == ShortEnum.One)
        self.assertTrue(value.Length == 2)

        value = Array[System.Object]([inst, inst])
        self.assertTrue(value[0].__class__ == inst.__class__)
        self.assertTrue(value[1].__class__ == inst.__class__)
        self.assertTrue(value.Length == 2)

        value = Array[InterfaceTest]([inst, inst])
        self.assertTrue(value[0].__class__ == inst.__class__)
        self.assertTrue(value[1].__class__ == inst.__class__)
        self.assertTrue(value.Length == 2)

        value = Array[ISayHello1]([inst, inst])
        self.assertTrue(value[0].__class__ == inst.__class__)
        self.assertTrue(value[1].__class__ == inst.__class__)
        self.assertTrue(value.Length == 2)

        inst = System.Exception("badness")
        value = Array[System.Exception]([inst, inst])
        self.assertTrue(value[0].__class__ == inst.__class__)
        self.assertTrue(value[1].__class__ == inst.__class__)
        self.assertTrue(value.Length == 2)
def test_pickling_exceptions():
    exc = System.Exception("test")
    dumped = pickle.dumps(exc)
    loaded = pickle.loads(dumped)

    assert exc.args == loaded.args
def test_unified_exception_semantics():
    """Test unified exception semantics."""
    e = System.Exception('Something bad happened')
    assert isinstance(e, Exception)
    assert isinstance(e, System.Exception)
Ejemplo n.º 11
0
         pass
 except SyntaxError:
     pass
 # /BUG
 
 # BUG 319 IOError not raised.
 if is_silverlight==False:
     try:
         fp = file('thisfiledoesnotexistatall.txt')
     except IOError:
         pass
 # /BUG
 
 # verify we can raise & catch CLR exceptions
 try:
     raise System.Exception('Hello World')
 except System.Exception, e:
     Assert(type(e) == System.Exception)
 
 
 
 # BUG 481 Trying to pass raise in Traceback should cause an error until it is implemented
 try:
     raise StopIteration("BadTraceback"), "somedata", "a string is not a traceback"
     Assert (False, "fell through raise for some reason")
 except StopIteration:
     Assert(False)
 except TypeError:
     pass
 
 try:
Ejemplo n.º 12
0
def execute(masterForm):
    ofg = System.Windows.Forms.OpenFileDialog()
    ofg.RestoreDirectory = True
    ofg.Filter = "所有 Excel 文件|*.xls;*.xlsx;*.xml|Excel 97-2003 文件|*.xls|Excel 2007 文件|*.xlsx|XML 文件|*.xml"
    if (ofg.ShowDialog() == System.Windows.Forms.DialogResult.OK):
        try:
            dts = Feng.Utils.ExcelHelper.ReadExcel(ofg.FileName)
            if (dts.Count == 0):
                raise Feng.InvalidUserOperationException("Excel中无数据!")
            dt = dts[0]
            if (dt.Columns.Count != 13):
                raise Feng.InvalidUserOperationException("文件栏目格式不符,请查证!")
            dzd = masterForm.DisplayManager.CurrentItem
            dao = Hd.Model.业务费用Dao()
            errorDt = dt.Clone()
            for row in dt.Rows:
                with Feng.ServiceProvider.GetService[Feng.IRepositoryFactory](
                ).GenerateRepository[Hd.Model.Jk.进口票]() as rep:
                    try:
                        tdh = row[3].ToString()
                        if (System.String.IsNullOrEmpty(tdh) or tdh == '提单号'):
                            continue
                        rep.BeginTransaction()
                        item = Hd.Model.业务费用()
                        item.票 = rep.Session.CreateCriteria[Hd.Model.Jk.进口票]()      \
                                .Add(NHibernate.Criterion.Expression.Eq("提单号", tdh))    \
                                .UniqueResult[Hd.Model.Jk.进口票]()
                        item.费用实体 = item.票
                        if (item.票 == None):
                            raise eng.InvalidUserOperationException("提单号" +
                                                                    tdh +
                                                                    "不存在!")
                        xh = row[0]
                        item.箱 = rep.Session.CreateCriteria[Hd.Model.Jk.进口箱]()      \
                                .Add(NHibernate.Criterion.Expression.Eq("箱号", xh))   \
                                .Add(NHibernate.Criterion.Expression.Eq("票", item.票))   \
                                .UniqueResult[Hd.Model.Jk.进口箱]()
                        if (item.箱 == None):
                            raise eng.InvalidUserOperationException("箱号" + xh +
                                                                    "不存在!")
                        item.箱Id = item.箱.ID

                        fyxs = ('127', '127', '127', '161', '162')
                        for i in range(0, 5, 1):
                            item2 = Hd.Model.业务费用()
                            item2.金额 = Feng.Utils.ConvertHelper.ToDecimal(
                                row[8 + i])
                            if (item2.金额 == None):
                                continue
                            item2.票 = item.票
                            item2.费用实体 = item.费用实体
                            item2.箱 = item.箱
                            item2.箱Id = item.箱Id
                            item2.费用项编号 = fyxs[i]
                            item2.收付标志 = Hd.Model.收付标志.付
                            item2.相关人编号 = "900005"
                            item2.对账单 = dzd
                            dao.Save(rep, item2)
                            dzd.费用.Add(item2)
                        rep.CommitTransaction()
                    except System.Exception, ex:
                        rep.RollbackTransaction()
                        errorDt.ImportRow(row)
                        Feng.ServiceProvider.GetService[
                            Feng.IExceptionProcess]().ProcessWithNotify(
                                System.Exception('提单号' + tdh + '数据有问题,请查证!',
                                                 ex))
            masterForm.ControlManager.OnCurrentItemChanged()
            if (errorDt.Rows.Count > 0):
                errorFileName =  System.IO.Path.GetDirectoryName(ofg.FileName) + '\\' + \
                                System.IO.Path.GetFileName(System.IO.Path.ChangeExtension(System.IO.Path.GetTempFileName(), ".xml"))
                Feng.Utils.ExcelXmlHelper.WriteExcelXml(
                    errorDt, errorFileName)
                Feng.MessageForm.ShowInfo("请查看错误文件" + errorFileName)
        except System.Exception, ex:
            Feng.ServiceProvider.GetService[
                Feng.IExceptionProcess]().ProcessWithNotify(ex)
Ejemplo n.º 13
0
def execute(masterForm):
    ofg = System.Windows.Forms.OpenFileDialog()
    ofg.RestoreDirectory = True
    ofg.Filter = "所有 Excel 文件|*.xls;*.xlsx;*.xml|Excel 97-2003 文件|*.xls|Excel 2007 文件|*.xlsx|XML 文件|*.xml"
    if (ofg.ShowDialog() == System.Windows.Forms.DialogResult.OK):
        try:
            dts = Feng.Utils.ExcelHelper.ReadExcel(ofg.FileName)
            if (dts.Count == 0):
                raise Feng.InvalidUserOperationException("Excel中无数据!")
            dt = dts[0]
            if (not dt.Columns.Contains("提单编号") or not dt.Columns.Contains("箱号") or not dt.Columns.Contains("费用类型") \
                or not dt.Columns.Contains("免费天数") or not dt.Columns.Contains("币种") or not dt.Columns.Contains("实际金额")):
                raise Feng.InvalidUserOperationException(
                    "文件中必须要有提单编号、箱号、费用类型、币种、实际金额栏,请查证!")
            dzd = masterForm.DisplayManager.CurrentItem
            dao = Hd.Model.业务费用Dao()
            errorDt = dt.Clone()
            for row in dt.Rows:
                with Feng.ServiceProvider.GetService[Feng.IRepositoryFactory](
                ).GenerateRepository[Hd.Model.Jk.进口票]() as rep:
                    try:
                        moeny = Feng.Utils.ConvertHelper.ToDecimal(row["实际金额"])
                        #if (moeny == 0):
                        #    continue;
                        rep.BeginTransaction()
                        item = Hd.Model.业务费用()
                        item.票 = rep.Session.CreateCriteria[Hd.Model.Jk.进口票]()      \
                                .Add(NHibernate.Criterion.Expression.Eq("提单号", row["提单编号"]))    \
                                .UniqueResult[Hd.Model.Jk.进口票]()
                        item.费用实体 = item.票
                        if (item.票 == None):
                            raise eng.InvalidUserOperationException(
                                "提单号" + row["提单编号"].ToString() + "不存在!")
                        item.箱 = rep.Session.CreateCriteria[Hd.Model.Jk.进口箱]()      \
                                .Add(NHibernate.Criterion.Expression.Eq("箱号", row["箱号"]))   \
                                .Add(NHibernate.Criterion.Expression.Eq("票", item.票))   \
                                .UniqueResult[Hd.Model.Jk.进口箱]()
                        if (item.箱 == None):
                            raise eng.InvalidUserOperationException(
                                "箱号" + row["箱号"].ToString() + "不存在!")
                        item.箱Id = item.箱.ID
                        if (row["费用类型"].ToString() == "XXF"):
                            item.费用项编号 = "165"
                        elif (row["费用类型"].ToString() == "ZX"):
                            item.费用项编号 = "167"
                        else:
                            raise Feng.InvalidUserOperationException(
                                "费用类型不能是" + row["费用类型"].ToString() + "!")
                        #if (row["免费天数"] != System.DBNull.Value && row["免费天数"] != null):
                        #    item.箱.最终免箱天数 = int(row["免费天数"]);
                        #    rep.Update(item.箱);
                        item.收付标志 = Hd.Model.收付标志.付
                        item.相关人编号 = "900010"
                        if (row["币种"].ToString() == "RMB"):
                            item.金额 = Feng.Utils.ConvertHelper.ToDecimal(
                                row["实际金额"])
                        elif (row["币种"].ToString() == "USD"):
                            item.金额 = 7 * Feng.Utils.ConvertHelper.ToDecimal(
                                row["实际金额"])
                        else:
                            raise Feng.InvalidUserOperationException(
                                "币种不能是" + row["币种"].ToString() + "!")
                        item.对账单 = dzd
                        dao.Save(rep, item)
                        dzd.费用.Add(item)
                        rep.CommitTransaction()
                    except System.Exception, ex:
                        rep.RollbackTransaction()
                        errorDt.ImportRow(row)
                        Feng.ServiceProvider.GetService[
                            Feng.IExceptionProcess]().ProcessWithNotify(
                                System.Exception(
                                    '提单号' + row["提单编号"] + '数据有问题,请查证!', ex))
            masterForm.ControlManager.OnCurrentItemChanged()
            if (errorDt.Rows.Count > 0):
                errorFileName =  System.IO.Path.GetDirectoryName(ofg.FileName) + '\\' + \
                                System.IO.Path.GetFileName(System.IO.Path.ChangeExtension(System.IO.Path.GetTempFileName(), ".xml"))
                Feng.Utils.ExcelXmlHelper.WriteExcelXml(
                    errorDt, errorFileName)
                Feng.MessageForm.ShowInfo("请查看错误文件" + errorFileName)
        except System.Exception, ex:
            Feng.ServiceProvider.GetService[
                Feng.IExceptionProcess]().ProcessWithNotify(ex)
    def test_interop(self):
        self.load_iron_python_test()

        from IronPythonTest import ExceptionsTest
        import System
        import sys

        a = ExceptionsTest()

        try:
            a.ThrowException()  # throws index out of range
        except IndexError as e:
            self.assertTrue(e.__class__ == IndexError)

        class MyTest(ExceptionsTest):
            def VirtualFunc(self):
                raise ex("hello world")

        ex = ValueError

        a = MyTest()

        # raise in python, translate into .NET, catch in Python
        try:
            a.CallVirtual()
        except ex as e:
            self.assertTrue(e.__class__ == ValueError)
            self.assertTrue(e.args[0] == "hello world")

        # raise in python, catch in .NET, verify .NET got an ArgumentException

        try:
            x = a.CallVirtCatch()
        except ex as e:
            self.assertTrue(False)

        self.assertTrue(isinstance(x, System.ArgumentException))

        # call through the slow paths...

        try:
            a.CallVirtualOverloaded('abc')
        except ex as e:
            self.assertTrue(e.__class__ == ex)
            self.assertTrue(e.args[0] == "hello world")
        # Note that sys.exc_info() is still set

        try:
            a.CallVirtualOverloaded(5)
        except ex as e:
            self.assertTrue(e.__class__ == ex)
            self.assertTrue(e.args[0] == "hello world")

        try:
            a.CallVirtualOverloaded(a)
        except ex as e:
            self.assertTrue(e.__class__ == ex)
            self.assertTrue(e.args[0] == "hello world")

        # catch and re-throw (both throw again and rethrow)

        try:
            a.CatchAndRethrow()
        except ex as e:
            self.assertTrue(e.__class__ == ex)
            self.assertTrue(e.args[0] == "hello world")

        try:
            a.CatchAndRethrow2()
        except ex as e:
            self.assertTrue(e.__class__ == ex)
            self.assertTrue(e.args[0] == "hello world")

        class MyTest(ExceptionsTest):
            def VirtualFunc(self):
                self.ThrowException()

        a = MyTest()

        # start in python, call CLS which calls Python which calls CLS which raises the exception
        try:
            a.CallVirtual()  # throws index out of range
        except IndexError as e:
            self.assertEqual(e.__class__, IndexError)

        # verify we can raise & catch CLR exceptions
        try:
            raise System.Exception('Hello World')
        except System.Exception as e:
            self.assertEqual(type(e), System.Exception)
    #Get the source from the first page
    if debug: print "Getting first page source"
    worker.ReportProgress(1, "Retrieving first page source")

    if worker.CancellationPending:
        e.Cancel = True
        return

    global first_page_source

    first_page_source = PageSource()
    result = first_page_source.get_source(first_page_uri)

    if result == False:
        raise System.Exception(first_page_source._exception.Message,
                               first_page_source._exception)

    if print_source: print first_page_source._source

    #Get the source from the second page
    worker.ReportProgress(2, "Retrieving second page source")

    if debug: print "Getting second page source"

    if worker.CancellationPending:
        e.Cancel = True
        return

    global second_page_source
    second_page_source = PageSource()
    result = second_page_source.get_source(second_page_uri)